Panagiotis Triantafyllou

new version

Showing 22 changed files with 264 additions and 57 deletions
...@@ -2,7 +2,7 @@ apply plugin: 'com.android.library' ...@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
2 2
3 ext { 3 ext {
4 PUBLISH_GROUP_ID = 'ly.warp' 4 PUBLISH_GROUP_ID = 'ly.warp'
5 - PUBLISH_VERSION = '4.5.4-cosbeta16' 5 + PUBLISH_VERSION = '4.5.4-cosbeta17'
6 PUBLISH_ARTIFACT_ID = 'warply-android-sdk' 6 PUBLISH_ARTIFACT_ID = 'warply-android-sdk'
7 } 7 }
8 8
......
...@@ -43,17 +43,17 @@ public class LoyaltyWallet extends Activity implements View.OnClickListener { ...@@ -43,17 +43,17 @@ public class LoyaltyWallet extends Activity implements View.OnClickListener {
43 // Fields 43 // Fields
44 // =========================================================== 44 // ===========================================================
45 45
46 - private ImageView mIvBack; 46 + private ImageView mIvBack, mIvDealsLogo;
47 private TextView mTvUsername, mTvDealsValue, mTvDealsValueAll, 47 private TextView mTvUsername, mTvDealsValue, mTvDealsValueAll,
48 mTvUserBadge, mTvGiftsValue, mTvGiftsValueAll, mTvActiveCode, mTvActiveDate; 48 mTvUserBadge, mTvGiftsValue, mTvGiftsValueAll, mTvActiveCode, mTvActiveDate;
49 - private ConstraintLayout mClDealsBanner, 49 + private ConstraintLayout mClDealsBanner, mClDealsView,
50 mClGiftsBanner; 50 mClGiftsBanner;
51 private LinearLayout mLlQuestionnaire, mLlUserBadge; 51 private LinearLayout mLlQuestionnaire, mLlUserBadge;
52 float couponValue = 0.0f, couponDfyValue = 0.0f; 52 float couponValue = 0.0f, couponDfyValue = 0.0f;
53 int couponCount = 0; 53 int couponCount = 0;
54 private RecyclerView mRecyclerCoupons; 54 private RecyclerView mRecyclerCoupons;
55 private ActiveCouponAdapter mAdapterCoupons; 55 private ActiveCouponAdapter mAdapterCoupons;
56 - CouponList cpnlist = new CouponList(); 56 + private CouponList cpnlist = new CouponList();
57 57
58 // =========================================================== 58 // ===========================================================
59 // Methods for/from SuperClass/Interfaces 59 // Methods for/from SuperClass/Interfaces
...@@ -77,6 +77,8 @@ public class LoyaltyWallet extends Activity implements View.OnClickListener { ...@@ -77,6 +77,8 @@ public class LoyaltyWallet extends Activity implements View.OnClickListener {
77 mTvDealsValueAll = findViewById(R.id.tv_deals_value_all); 77 mTvDealsValueAll = findViewById(R.id.tv_deals_value_all);
78 mTvActiveCode = findViewById(R.id.tv_active_deals_text); 78 mTvActiveCode = findViewById(R.id.tv_active_deals_text);
79 mTvActiveDate = findViewById(R.id.tv_active_deals_date_text); 79 mTvActiveDate = findViewById(R.id.tv_active_deals_date_text);
80 + mIvDealsLogo = findViewById(R.id.dfy_logo);
81 + mClDealsView = findViewById(R.id.cl_mygifts);
80 82
81 if (WarplyManagerHelper.getActiveDFYCoupons() != null) { 83 if (WarplyManagerHelper.getActiveDFYCoupons() != null) {
82 Collections.sort(WarplyManagerHelper.getActiveDFYCoupons(), new Comparator<ActiveDFYCouponModel>() { 84 Collections.sort(WarplyManagerHelper.getActiveDFYCoupons(), new Comparator<ActiveDFYCouponModel>() {
...@@ -138,7 +140,7 @@ public class LoyaltyWallet extends Activity implements View.OnClickListener { ...@@ -138,7 +140,7 @@ public class LoyaltyWallet extends Activity implements View.OnClickListener {
138 return; 140 return;
139 } 141 }
140 if (view.getId() == R.id.cl_deals_win) { 142 if (view.getId() == R.id.cl_deals_win) {
141 - 143 + //TODO: Loyalty history
142 } 144 }
143 } 145 }
144 146
...@@ -178,6 +180,9 @@ public class LoyaltyWallet extends Activity implements View.OnClickListener { ...@@ -178,6 +180,9 @@ public class LoyaltyWallet extends Activity implements View.OnClickListener {
178 } catch (ParseException e) { 180 } catch (ParseException e) {
179 e.printStackTrace(); 181 e.printStackTrace();
180 } 182 }
183 + } else {
184 + mIvDealsLogo.setVisibility(View.GONE);
185 + mClDealsView.setVisibility(View.GONE);
181 } 186 }
182 187
183 if (WarplyManagerHelper.getConsumer() != null) { 188 if (WarplyManagerHelper.getConsumer() != null) {
......
...@@ -25,16 +25,15 @@ ...@@ -25,16 +25,15 @@
25 25
26 package ly.warp.sdk.activities; 26 package ly.warp.sdk.activities;
27 27
28 +import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MAX;
29 +import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MIN;
30 +
28 import android.content.Context; 31 import android.content.Context;
29 import android.content.Intent; 32 import android.content.Intent;
30 import android.graphics.Color; 33 import android.graphics.Color;
31 import android.os.Build; 34 import android.os.Build;
32 import android.os.Bundle; 35 import android.os.Bundle;
33 -
34 -import androidx.annotation.NonNull;
35 -
36 import android.text.TextUtils; 36 import android.text.TextUtils;
37 -import android.util.Log;
38 import android.view.KeyEvent; 37 import android.view.KeyEvent;
39 import android.view.View; 38 import android.view.View;
40 import android.webkit.WebView; 39 import android.webkit.WebView;
...@@ -42,15 +41,20 @@ import android.widget.ImageView; ...@@ -42,15 +41,20 @@ import android.widget.ImageView;
42 import android.widget.ProgressBar; 41 import android.widget.ProgressBar;
43 import android.widget.RelativeLayout; 42 import android.widget.RelativeLayout;
44 43
45 -import java.security.SecureRandom; 44 +import androidx.annotation.NonNull;
46 -import java.util.concurrent.ThreadLocalRandom;
47 -import java.util.concurrent.TimeUnit;
48 -
49 import androidx.work.Constraints; 45 import androidx.work.Constraints;
50 import androidx.work.NetworkType; 46 import androidx.work.NetworkType;
51 import androidx.work.OneTimeWorkRequest; 47 import androidx.work.OneTimeWorkRequest;
52 import androidx.work.WorkManager; 48 import androidx.work.WorkManager;
53 49
50 +import org.greenrobot.eventbus.EventBus;
51 +import org.greenrobot.eventbus.Subscribe;
52 +
53 +import java.security.SecureRandom;
54 +import java.util.concurrent.ThreadLocalRandom;
55 +import java.util.concurrent.TimeUnit;
56 +
57 +import ly.warp.sdk.R;
54 import ly.warp.sdk.Warply; 58 import ly.warp.sdk.Warply;
55 import ly.warp.sdk.services.PushEventsClickedWorkerService; 59 import ly.warp.sdk.services.PushEventsClickedWorkerService;
56 import ly.warp.sdk.utils.WarpJSONParser; 60 import ly.warp.sdk.utils.WarpJSONParser;
...@@ -62,12 +66,6 @@ import ly.warp.sdk.utils.managers.WarplyEventBusManager; ...@@ -62,12 +66,6 @@ import ly.warp.sdk.utils.managers.WarplyEventBusManager;
62 import ly.warp.sdk.utils.managers.WarplySessionManager; 66 import ly.warp.sdk.utils.managers.WarplySessionManager;
63 import ly.warp.sdk.views.WarpView; 67 import ly.warp.sdk.views.WarpView;
64 68
65 -import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MAX;
66 -import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MIN;
67 -
68 -import org.greenrobot.eventbus.EventBus;
69 -import org.greenrobot.eventbus.Subscribe;
70 -
71 public class WarpViewActivity extends WarpBaseActivity { 69 public class WarpViewActivity extends WarpBaseActivity {
72 70
73 // =========================================================== 71 // ===========================================================
...@@ -83,6 +81,8 @@ public class WarpViewActivity extends WarpBaseActivity { ...@@ -83,6 +81,8 @@ public class WarpViewActivity extends WarpBaseActivity {
83 @Override 81 @Override
84 public void onCreate(Bundle savedInstanceState) { 82 public void onCreate(Bundle savedInstanceState) {
85 super.onCreate(savedInstanceState); 83 super.onCreate(savedInstanceState);
84 + setContentView(R.layout.activity_loyalty_wallet);
85 +
86 WarplySessionManager.onCreateActivity(this); 86 WarplySessionManager.onCreateActivity(this);
87 initViews(); 87 initViews();
88 Warply.getInitializer(this).init(); 88 Warply.getInitializer(this).init();
...@@ -129,6 +129,10 @@ public class WarpViewActivity extends WarpBaseActivity { ...@@ -129,6 +129,10 @@ public class WarpViewActivity extends WarpBaseActivity {
129 EventBus.getDefault().post(new WarplyEventBusManager(event.getQuestionnaire())); 129 EventBus.getDefault().post(new WarplyEventBusManager(event.getQuestionnaire()));
130 if (event.getCoupon() != null) 130 if (event.getCoupon() != null)
131 EventBus.getDefault().post(new WarplyEventBusManager(event.getCoupon())); 131 EventBus.getDefault().post(new WarplyEventBusManager(event.getCoupon()));
132 + if (event.getPacingCard() != null)
133 + EventBus.getDefault().post(new WarplyEventBusManager(event.getPacingCard()));
134 + if (event.getPacingService() != null)
135 + EventBus.getDefault().post(new WarplyEventBusManager(event.getPacingService()));
132 finish(); 136 finish();
133 } 137 }
134 138
......
...@@ -34,7 +34,7 @@ public class CouponEventModel { ...@@ -34,7 +34,7 @@ public class CouponEventModel {
34 private boolean success; 34 private boolean success;
35 35
36 public CouponEventModel() { 36 public CouponEventModel() {
37 - this.success = false; 37 + this.success = true;
38 } 38 }
39 39
40 public boolean isSuccess() { 40 public boolean isSuccess() {
......
1 +/*
2 + * Copyright 2010-2013 Warply Ltd. All rights reserved.
3 + *
4 + * Redistribution and use in source and binary forms, without modification, are
5 + * permitted provided that the following conditions are met:
6 + *
7 + * 1. Redistributions of source code must retain the above copyright notice,
8 + * this list of conditions and the following disclaimer.
9 + *
10 + * 2. Redistributions in binary form must reproduce the above copyright notice,
11 + * this list of conditions and the following disclaimer in the documentation
12 + * and/or other materials provided with the distribution.
13 + *
14 + * THIS SOFTWARE IS PROVIDED BY THE WARPLY LTD ``AS IS'' AND ANY EXPRESS OR
15 + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16 + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
17 + * EVENT SHALL WARPLY LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
18 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19 + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
20 + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
23 + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 + */
25 +
26 +package ly.warp.sdk.io.models;
27 +
28 +
29 +/**
30 + * Created by Panagiotis Triantafyllou on 27-June-22.
31 + */
32 +
33 +public class LoyaltyBadgeModel {
34 + private float value;
35 + private int couponCount;
36 +
37 + public LoyaltyBadgeModel() {
38 + this.value = 0.0f;
39 + this.couponCount = 0;
40 + }
41 +
42 + public float getValue() {
43 + return value;
44 + }
45 +
46 + public void setValue(float value) {
47 + this.value = value;
48 + }
49 +
50 + public int getCouponCount() {
51 + return couponCount;
52 + }
53 +
54 + public void setCouponCount(int couponCount) {
55 + this.couponCount = couponCount;
56 + }
57 +}
...@@ -127,7 +127,7 @@ public class PacingDetails { ...@@ -127,7 +127,7 @@ public class PacingDetails {
127 return humanReadableString; 127 return humanReadableString;
128 } 128 }
129 129
130 - private class PacingInner { 130 + public class PacingInner {
131 private static final String TOTAL = "total"; 131 private static final String TOTAL = "total";
132 private static final String MONTH = "month"; 132 private static final String MONTH = "month";
133 private static final String WEEK = "week"; 133 private static final String WEEK = "week";
...@@ -195,7 +195,7 @@ public class PacingDetails { ...@@ -195,7 +195,7 @@ public class PacingDetails {
195 } 195 }
196 } 196 }
197 197
198 - private class PacingDetailsInner { 198 + public class PacingDetailsInner {
199 private static final String GOAL = "goal"; 199 private static final String GOAL = "goal";
200 private static final String VALLUE = "value"; 200 private static final String VALLUE = "value";
201 private static final String PER_DAY = "per_day"; 201 private static final String PER_DAY = "per_day";
...@@ -256,7 +256,7 @@ public class PacingDetails { ...@@ -256,7 +256,7 @@ public class PacingDetails {
256 } 256 }
257 } 257 }
258 258
259 - private class PacingDetailsDay { 259 + public class PacingDetailsDay {
260 private static final String DAY = "day"; 260 private static final String DAY = "day";
261 private static final String VALLUE = "value"; 261 private static final String VALLUE = "value";
262 262
......
...@@ -44,9 +44,11 @@ import ly.warp.sdk.io.models.ActiveDFYCouponModel; ...@@ -44,9 +44,11 @@ import ly.warp.sdk.io.models.ActiveDFYCouponModel;
44 import ly.warp.sdk.io.models.Campaign; 44 import ly.warp.sdk.io.models.Campaign;
45 import ly.warp.sdk.io.models.CampaignList; 45 import ly.warp.sdk.io.models.CampaignList;
46 import ly.warp.sdk.io.models.Consumer; 46 import ly.warp.sdk.io.models.Consumer;
47 +import ly.warp.sdk.io.models.Coupon;
47 import ly.warp.sdk.io.models.CouponList; 48 import ly.warp.sdk.io.models.CouponList;
48 import ly.warp.sdk.io.models.CouponsetsList; 49 import ly.warp.sdk.io.models.CouponsetsList;
49 import ly.warp.sdk.io.models.CustomerStateModel; 50 import ly.warp.sdk.io.models.CustomerStateModel;
51 +import ly.warp.sdk.io.models.LoyaltyBadgeModel;
50 import ly.warp.sdk.io.models.LoyaltyContextualOfferModel; 52 import ly.warp.sdk.io.models.LoyaltyContextualOfferModel;
51 import ly.warp.sdk.io.models.LoyaltyGiftsForYouPackage; 53 import ly.warp.sdk.io.models.LoyaltyGiftsForYouPackage;
52 import ly.warp.sdk.io.request.CosmoteRetrieveSharingRequest; 54 import ly.warp.sdk.io.request.CosmoteRetrieveSharingRequest;
...@@ -78,6 +80,7 @@ public class WarplyManagerHelper { ...@@ -78,6 +80,7 @@ public class WarplyManagerHelper {
78 private static ArrayList<LoyaltyContextualOfferModel> mCCMSList = new ArrayList<>(); 80 private static ArrayList<LoyaltyContextualOfferModel> mCCMSList = new ArrayList<>();
79 private static AlertDialog mAlertDialogSharing, mAlertDialogAcceptSharing, mAlertDialogRejectSharing, 81 private static AlertDialog mAlertDialogSharing, mAlertDialogAcceptSharing, mAlertDialogRejectSharing,
80 mAlertDialogReturnSharing, mAlertDialogErrorSharing; 82 mAlertDialogReturnSharing, mAlertDialogErrorSharing;
83 + private static LoyaltyBadgeModel mLoyaltyBadge = new LoyaltyBadgeModel();
81 84
82 // =========================================================== 85 // ===========================================================
83 // Methods for/from SuperClass/Interfaces 86 // Methods for/from SuperClass/Interfaces
...@@ -117,7 +120,6 @@ public class WarplyManagerHelper { ...@@ -117,7 +120,6 @@ public class WarplyManagerHelper {
117 WarplyManager.cosmoteSharing(new CosmoteSharingRequest().setSharingId(sharingId), new CallbackReceiver<JSONObject>() { 120 WarplyManager.cosmoteSharing(new CosmoteSharingRequest().setSharingId(sharingId), new CallbackReceiver<JSONObject>() {
118 @Override 121 @Override
119 public void onSuccess(JSONObject result) { 122 public void onSuccess(JSONObject result) {
120 - Log.v("CosmoteSharing", "Success");
121 int status = result.optInt("status", 2); 123 int status = result.optInt("status", 2);
122 if (status == 1) { 124 if (status == 1) {
123 JSONObject innerResult = new JSONObject(); 125 JSONObject innerResult = new JSONObject();
...@@ -140,7 +142,6 @@ public class WarplyManagerHelper { ...@@ -140,7 +142,6 @@ public class WarplyManagerHelper {
140 142
141 @Override 143 @Override
142 public void onFailure(int errorCode) { 144 public void onFailure(int errorCode) {
143 - Log.v("CosmoteSharing", "Error");
144 errorSharingDialog(context); 145 errorSharingDialog(context);
145 } 146 }
146 }); 147 });
...@@ -353,6 +354,17 @@ public class WarplyManagerHelper { ...@@ -353,6 +354,17 @@ public class WarplyManagerHelper {
353 } 354 }
354 355
355 /** 356 /**
357 + * Open Pacing
358 + */
359 + public static String openPacing() {
360 + if (mUniqueCampaignList != null && mUniqueCampaignList.get("pacing") != null && mUniqueCampaignList.get("pacing").size() > 0) {
361 + return constructCampaignUrl(mUniqueCampaignList.get("pacing").get(0));
362 + }
363 +
364 + return "";
365 + }
366 +
367 + /**
356 * Save if customer is nonTelco and if he/she has accepted the consents, 368 * Save if customer is nonTelco and if he/she has accepted the consents,
357 * And his msisdn list 369 * And his msisdn list
358 */ 370 */
...@@ -437,9 +449,32 @@ public class WarplyManagerHelper { ...@@ -437,9 +449,32 @@ public class WarplyManagerHelper {
437 } 449 }
438 450
439 public static void setCouponList(CouponList couponList) { 451 public static void setCouponList(CouponList couponList) {
452 + LoyaltyBadgeModel badge = new LoyaltyBadgeModel();
453 + CouponList cpnlist = new CouponList();
454 + float couponValue = 0.0f;
455 + int couponCount = 0;
456 + for (Coupon coupon : couponList) {
457 + if (coupon.getStatus() == 1) {
458 + try {
459 + cpnlist.add(coupon);
460 + couponCount += 1;
461 + couponValue += Float.parseFloat(coupon.getDiscount());
462 + } catch (NumberFormatException e) {
463 + cpnlist.remove(coupon);
464 + couponCount -= 1;
465 + }
466 + }
467 + }
468 + badge.setCouponCount(couponCount);
469 + badge.setValue(couponValue);
470 + mLoyaltyBadge = badge;
440 mCouponList = couponList; 471 mCouponList = couponList;
441 } 472 }
442 473
474 + public static LoyaltyBadgeModel getLoyaltyBadge() {
475 + return mLoyaltyBadge;
476 + }
477 +
443 public static CouponsetsList getCouponsets() { 478 public static CouponsetsList getCouponsets() {
444 return mCouponsetsList; 479 return mCouponsetsList;
445 } 480 }
......
...@@ -64,6 +64,8 @@ import java.util.Map; ...@@ -64,6 +64,8 @@ import java.util.Map;
64 import ly.warp.sdk.Warply; 64 import ly.warp.sdk.Warply;
65 import ly.warp.sdk.io.models.CouponEventModel; 65 import ly.warp.sdk.io.models.CouponEventModel;
66 import ly.warp.sdk.io.models.QuestionnaireEventModel; 66 import ly.warp.sdk.io.models.QuestionnaireEventModel;
67 +import ly.warp.sdk.io.models.WarplyPacingCardEventModel;
68 +import ly.warp.sdk.io.models.WarplyPacingCardServiceEnabledModel;
67 import ly.warp.sdk.utils.WarpUtils; 69 import ly.warp.sdk.utils.WarpUtils;
68 import ly.warp.sdk.utils.WarplyProperty; 70 import ly.warp.sdk.utils.WarplyProperty;
69 import ly.warp.sdk.utils.WarplyUrlHandler; 71 import ly.warp.sdk.utils.WarplyUrlHandler;
...@@ -384,9 +386,25 @@ public class WarpView extends WebView { ...@@ -384,9 +386,25 @@ public class WarpView extends WebView {
384 WarpUtils.setUserTag(Warply.getWarplyContext(), parts[2]); 386 WarpUtils.setUserTag(Warply.getWarplyContext(), parts[2]);
385 EventBus.getDefault().post(new WarplyEventBusManager(questionnaireEvent)); 387 EventBus.getDefault().post(new WarplyEventBusManager(questionnaireEvent));
386 } else if (parts[1].equals("event:couponRetrieved")) { 388 } else if (parts[1].equals("event:couponRetrieved")) {
387 - CouponEventModel couponEvent = new CouponEventModel(); 389 + EventBus.getDefault().post(new WarplyEventBusManager(new CouponEventModel()));
388 - couponEvent.setSuccess(true); 390 + } else if (parts[2].equals("serviceDisabled")) {
389 - EventBus.getDefault().post(new WarplyEventBusManager(couponEvent)); 391 + WarplyPacingCardServiceEnabledModel pacingService = new WarplyPacingCardServiceEnabledModel();
392 + pacingService.setEnabled(false);
393 + EventBus.getDefault().post(new WarplyEventBusManager(pacingService));
394 + } else if (parts[2].equals("serviceEnabled")) {
395 + WarplyPacingCardServiceEnabledModel pacingService = new WarplyPacingCardServiceEnabledModel();
396 + pacingService.setEnabled(true);
397 + EventBus.getDefault().post(new WarplyEventBusManager(pacingService));
398 + } else if (parts[2].equals("shortcutEnabled")) {
399 + WarplyPacingCardEventModel pacingVisible = new WarplyPacingCardEventModel();
400 + pacingVisible.setVisible(true);
401 + EventBus.getDefault().post(new WarplyEventBusManager(pacingVisible));
402 + } else if (parts[2].equals("shortcutDisabled")) {
403 + WarplyPacingCardEventModel pacingVisible = new WarplyPacingCardEventModel();
404 + pacingVisible.setVisible(false);
405 + EventBus.getDefault().post(new WarplyEventBusManager(pacingVisible));
406 + } else if (parts[1].equals("request") || parts[1].equals("response")) {
407 + WarpUtils.verbose(parts[2]);
390 } 408 }
391 } 409 }
392 } 410 }
......
...@@ -36,13 +36,14 @@ public class MergedGiftsAdapter extends RecyclerView.Adapter<MergedGiftsAdapter. ...@@ -36,13 +36,14 @@ public class MergedGiftsAdapter extends RecyclerView.Adapter<MergedGiftsAdapter.
36 } 36 }
37 37
38 public class MergedGiftsViewHolder extends RecyclerView.ViewHolder { 38 public class MergedGiftsViewHolder extends RecyclerView.ViewHolder {
39 - private ImageView ivMergedGiftsLogo; 39 + private ImageView ivMergedGiftsLogo, ivIsNew;
40 private TextView tvMergedGiftsTitle; 40 private TextView tvMergedGiftsTitle;
41 41
42 public MergedGiftsViewHolder(View view) { 42 public MergedGiftsViewHolder(View view) {
43 super(view); 43 super(view);
44 ivMergedGiftsLogo = view.findViewById(R.id.iv_campaign_logo); 44 ivMergedGiftsLogo = view.findViewById(R.id.iv_campaign_logo);
45 tvMergedGiftsTitle = view.findViewById(R.id.tv_campaign_title); 45 tvMergedGiftsTitle = view.findViewById(R.id.tv_campaign_title);
46 + ivIsNew = view.findViewById(R.id.iv_campaign_new);
46 } 47 }
47 } 48 }
48 49
...@@ -90,6 +91,11 @@ public class MergedGiftsAdapter extends RecyclerView.Adapter<MergedGiftsAdapter. ...@@ -90,6 +91,11 @@ public class MergedGiftsAdapter extends RecyclerView.Adapter<MergedGiftsAdapter.
90 } 91 }
91 92
92 holder.tvMergedGiftsTitle.setText(mergedgiftsItem.getCampaign().getTitle()); 93 holder.tvMergedGiftsTitle.setText(mergedgiftsItem.getCampaign().getTitle());
94 +
95 + if (mergedgiftsItem.getCampaign().getIsNew())
96 + holder.ivIsNew.setVisibility(View.VISIBLE);
97 + else
98 + holder.ivIsNew.setVisibility(View.GONE);
93 } else if (mergedgiftsItem != null && mergedgiftsItem.getDataType() == 2) { 99 } else if (mergedgiftsItem != null && mergedgiftsItem.getDataType() == 2) {
94 if (!TextUtils.isEmpty(mergedgiftsItem.getSeasonalList().getImageUrl())) { 100 if (!TextUtils.isEmpty(mergedgiftsItem.getSeasonalList().getImageUrl())) {
95 Glide.with(mContext) 101 Glide.with(mContext)
......
...@@ -42,8 +42,8 @@ public class ProfileCampaignAdapter extends RecyclerView.Adapter<ProfileCampaign ...@@ -42,8 +42,8 @@ public class ProfileCampaignAdapter extends RecyclerView.Adapter<ProfileCampaign
42 } 42 }
43 43
44 public class ProfileCampaignViewHolder extends RecyclerView.ViewHolder { 44 public class ProfileCampaignViewHolder extends RecyclerView.ViewHolder {
45 - private ImageView ivCampaignTitle; 45 + private ImageView ivCampaignTitle, ivIsNew;
46 - private TextView tvCampaignTitle, tvCampaignSubtitle; 46 + private TextView tvCampaignTitle, tvCampaignSubtitle, tvCampaignMessage;
47 47
48 public ProfileCampaignViewHolder(View view) { 48 public ProfileCampaignViewHolder(View view) {
49 super(view); 49 super(view);
...@@ -55,8 +55,11 @@ public class ProfileCampaignAdapter extends RecyclerView.Adapter<ProfileCampaign ...@@ -55,8 +55,11 @@ public class ProfileCampaignAdapter extends RecyclerView.Adapter<ProfileCampaign
55 super(view); 55 super(view);
56 ivCampaignTitle = view.findViewById(R.id.iv_campaign_logo); 56 ivCampaignTitle = view.findViewById(R.id.iv_campaign_logo);
57 tvCampaignTitle = view.findViewById(R.id.tv_campaign_title); 57 tvCampaignTitle = view.findViewById(R.id.tv_campaign_title);
58 - if (vertical) 58 + ivIsNew = view.findViewById(R.id.iv_campaign_new);
59 + if (vertical) {
59 tvCampaignSubtitle = view.findViewById(R.id.tv_campaign_subtitle); 60 tvCampaignSubtitle = view.findViewById(R.id.tv_campaign_subtitle);
61 + tvCampaignMessage = view.findViewById(R.id.tv_campaign_message);
62 + }
60 } 63 }
61 } 64 }
62 65
...@@ -109,8 +112,14 @@ public class ProfileCampaignAdapter extends RecyclerView.Adapter<ProfileCampaign ...@@ -109,8 +112,14 @@ public class ProfileCampaignAdapter extends RecyclerView.Adapter<ProfileCampaign
109 } 112 }
110 113
111 holder.tvCampaignTitle.setText(campaignItem.getTitle()); 114 holder.tvCampaignTitle.setText(campaignItem.getTitle());
112 - if (mIsVertical) 115 + if (mIsVertical) {
113 holder.tvCampaignSubtitle.setText(campaignItem.getSubtitle()); 116 holder.tvCampaignSubtitle.setText(campaignItem.getSubtitle());
117 + holder.tvCampaignMessage.setText(campaignItem.getMessage());
118 + if (campaignItem.getIsNew())
119 + holder.ivIsNew.setVisibility(View.VISIBLE);
120 + else
121 + holder.ivIsNew.setVisibility(View.GONE);
122 + }
114 123
115 holder.itemView.setOnClickListener(v -> onClickSubject.onNext(campaignItem)); 124 holder.itemView.setOnClickListener(v -> onClickSubject.onNext(campaignItem));
116 } 125 }
......
...@@ -6,5 +6,5 @@ ...@@ -6,5 +6,5 @@
6 android:endColor="@color/cos_green8" 6 android:endColor="@color/cos_green8"
7 android:type="linear"/> 7 android:type="linear"/>
8 <corners 8 <corners
9 - android:radius="8dp"/> 9 + android:radius="5dp"/>
10 </shape> 10 </shape>
...\ No newline at end of file ...\ No newline at end of file
......
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:shape="rectangle">
4 + <corners android:radius="8dp" />
5 +
6 + <solid android:color="@color/cos_grey2" />
7 +</shape>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto" 3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 + xmlns:tools="http://schemas.android.com/tools"
4 android:id="@+id/cl_bill_payment" 5 android:id="@+id/cl_bill_payment"
5 android:layout_width="match_parent" 6 android:layout_width="match_parent"
6 android:layout_height="match_parent" 7 android:layout_height="match_parent"
...@@ -52,7 +53,8 @@ ...@@ -52,7 +53,8 @@
52 android:background="@drawable/shape_cos_gradient5" 53 android:background="@drawable/shape_cos_gradient5"
53 android:orientation="vertical" 54 android:orientation="vertical"
54 android:paddingVertical="16dp" 55 android:paddingVertical="16dp"
55 - android:visibility="gone"> 56 + android:visibility="gone"
57 + tools:visibility="visible">
56 58
57 <ImageView 59 <ImageView
58 android:id="@+id/iv_popup_gifts_close" 60 android:id="@+id/iv_popup_gifts_close"
...@@ -62,11 +64,11 @@ ...@@ -62,11 +64,11 @@
62 android:src="@drawable/ic_close_white" /> 64 android:src="@drawable/ic_close_white" />
63 65
64 <ImageView 66 <ImageView
65 - android:layout_width="wrap_content" 67 + android:layout_width="48dp"
66 - android:layout_height="wrap_content" 68 + android:layout_height="48dp"
67 android:layout_gravity="center" 69 android:layout_gravity="center"
68 android:scaleType="centerInside" 70 android:scaleType="centerInside"
69 - android:src="@drawable/ic_gifts_for_you_white" /> 71 + android:src="@drawable/ic_present" />
70 72
71 <TextView 73 <TextView
72 android:layout_width="wrap_content" 74 android:layout_width="wrap_content"
...@@ -84,6 +86,7 @@ ...@@ -84,6 +86,7 @@
84 android:layout_height="wrap_content" 86 android:layout_height="wrap_content"
85 android:layout_gravity="center" 87 android:layout_gravity="center"
86 android:gravity="center" 88 android:gravity="center"
89 + android:layout_marginHorizontal="40dp"
87 android:text="@string/cos_popup_gifts_subtitle" 90 android:text="@string/cos_popup_gifts_subtitle"
88 android:textColor="@android:color/white" 91 android:textColor="@android:color/white"
89 android:textSize="16sp" /> 92 android:textSize="16sp" />
......
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
122 android:paddingHorizontal="10dp" 122 android:paddingHorizontal="10dp"
123 android:paddingVertical="3dp" 123 android:paddingVertical="3dp"
124 android:visibility="gone" 124 android:visibility="gone"
125 - tools:visibility="visible"> 125 + tools:visibility="gone">
126 126
127 <TextView 127 <TextView
128 android:id="@+id/tv_type" 128 android:id="@+id/tv_type"
...@@ -138,16 +138,18 @@ ...@@ -138,16 +138,18 @@
138 android:layout_width="wrap_content" 138 android:layout_width="wrap_content"
139 android:layout_height="wrap_content" 139 android:layout_height="wrap_content"
140 android:gravity="center" 140 android:gravity="center"
141 + android:background="@drawable/shape_cos_grey5"
141 android:paddingHorizontal="8dp" 142 android:paddingHorizontal="8dp"
142 android:paddingVertical="4dp" 143 android:paddingVertical="4dp"
143 - android:visibility="gone"> 144 + android:visibility="gone"
145 + tools:visibility="visible">
144 146
145 <TextView 147 <TextView
146 android:id="@+id/tv_questionnaire" 148 android:id="@+id/tv_questionnaire"
147 android:layout_width="wrap_content" 149 android:layout_width="wrap_content"
148 android:layout_height="wrap_content" 150 android:layout_height="wrap_content"
149 - android:text="@string/cos_profile_questionnaire" 151 + android:text="@string/cos_profile_preferences"
150 - android:textColor="@color/cos_dark_blue" 152 + android:textColor="@color/cos_green6"
151 android:textFontWeight="600" /> 153 android:textFontWeight="600" />
152 </LinearLayout> 154 </LinearLayout>
153 </LinearLayout> 155 </LinearLayout>
...@@ -315,6 +317,7 @@ ...@@ -315,6 +317,7 @@
315 </androidx.constraintlayout.widget.ConstraintLayout> 317 </androidx.constraintlayout.widget.ConstraintLayout>
316 318
317 <ImageView 319 <ImageView
320 + android:id="@+id/dfy_logo"
318 android:layout_width="110dp" 321 android:layout_width="110dp"
319 android:layout_height="40dp" 322 android:layout_height="40dp"
320 android:layout_gravity="start" 323 android:layout_gravity="start"
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
3 xmlns:app="http://schemas.android.com/apk/res-auto" 3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 android:layout_width="match_parent" 4 android:layout_width="match_parent"
5 android:layout_height="match_parent" 5 android:layout_height="match_parent"
6 + xmlns:tools="http://schemas.android.com/tools"
6 android:background="@android:color/white" 7 android:background="@android:color/white"
7 android:fillViewport="true"> 8 android:fillViewport="true">
8 9
...@@ -52,7 +53,8 @@ ...@@ -52,7 +53,8 @@
52 android:background="@drawable/shape_cos_gradient5" 53 android:background="@drawable/shape_cos_gradient5"
53 android:orientation="vertical" 54 android:orientation="vertical"
54 android:paddingVertical="16dp" 55 android:paddingVertical="16dp"
55 - android:visibility="gone"> 56 + android:visibility="gone"
57 + tools:visibility="visible">
56 58
57 <ImageView 59 <ImageView
58 android:id="@+id/iv_popup_more_close" 60 android:id="@+id/iv_popup_more_close"
...@@ -62,17 +64,17 @@ ...@@ -62,17 +64,17 @@
62 android:src="@drawable/ic_close_white" /> 64 android:src="@drawable/ic_close_white" />
63 65
64 <ImageView 66 <ImageView
65 - android:layout_width="wrap_content" 67 + android:layout_width="48dp"
66 android:layout_height="wrap_content" 68 android:layout_height="wrap_content"
67 android:layout_gravity="center" 69 android:layout_gravity="center"
68 android:scaleType="centerInside" 70 android:scaleType="centerInside"
69 - android:src="@drawable/ic_more_for_you_new" /> 71 + android:src="@drawable/ic_heart" />
70 72
71 <TextView 73 <TextView
72 android:layout_width="wrap_content" 74 android:layout_width="wrap_content"
73 android:layout_height="wrap_content" 75 android:layout_height="wrap_content"
74 android:layout_gravity="center" 76 android:layout_gravity="center"
75 - android:layout_marginTop="24dp" 77 + android:layout_marginTop="8dp"
76 android:layout_marginBottom="12dp" 78 android:layout_marginBottom="12dp"
77 android:text="@string/cos_popup_more_title" 79 android:text="@string/cos_popup_more_title"
78 android:textColor="@android:color/white" 80 android:textColor="@android:color/white"
...@@ -84,6 +86,7 @@ ...@@ -84,6 +86,7 @@
84 android:layout_height="wrap_content" 86 android:layout_height="wrap_content"
85 android:layout_gravity="center" 87 android:layout_gravity="center"
86 android:gravity="center" 88 android:gravity="center"
89 + android:layout_marginHorizontal="40dp"
87 android:text="@string/cos_popup_more_subtitle" 90 android:text="@string/cos_popup_more_subtitle"
88 android:textColor="@android:color/white" 91 android:textColor="@android:color/white"
89 android:textSize="16sp" /> 92 android:textSize="16sp" />
...@@ -94,7 +97,6 @@ ...@@ -94,7 +97,6 @@
94 android:layout_width="match_parent" 97 android:layout_width="match_parent"
95 android:layout_height="match_parent" 98 android:layout_height="match_parent"
96 android:layout_below="@+id/ll_more_popup" 99 android:layout_below="@+id/ll_more_popup"
97 - android:layout_marginHorizontal="16dp"
98 android:layout_marginTop="4dp" 100 android:layout_marginTop="4dp"
99 android:clipToPadding="false" 101 android:clipToPadding="false"
100 android:orientation="vertical" 102 android:orientation="vertical"
......
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 -<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto" 3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools" 4 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent" 5 android:layout_width="match_parent"
6 android:layout_height="150dp" 6 android:layout_height="150dp"
7 + android:layout_marginBottom="24dp">
8 +
9 + <androidx.cardview.widget.CardView
10 + android:layout_width="match_parent"
11 + android:layout_height="match_parent"
12 +
7 android:layout_marginHorizontal="16dp" 13 android:layout_marginHorizontal="16dp"
8 - android:layout_marginBottom="24dp"
9 app:cardCornerRadius="4dp"> 14 app:cardCornerRadius="4dp">
10 15
11 <androidx.constraintlayout.widget.ConstraintLayout 16 <androidx.constraintlayout.widget.ConstraintLayout
...@@ -46,6 +51,21 @@ ...@@ -46,6 +51,21 @@
46 app:layout_constraintRight_toRightOf="parent" 51 app:layout_constraintRight_toRightOf="parent"
47 app:layout_constraintTop_toTopOf="parent" 52 app:layout_constraintTop_toTopOf="parent"
48 tools:text="-10% in all products from IKEA" /> 53 tools:text="-10% in all products from IKEA" />
49 -
50 </androidx.constraintlayout.widget.ConstraintLayout> 54 </androidx.constraintlayout.widget.ConstraintLayout>
51 -</androidx.cardview.widget.CardView>
...\ No newline at end of file ...\ No newline at end of file
55 + </androidx.cardview.widget.CardView>
56 +
57 + <ImageView
58 + android:id="@+id/iv_campaign_new"
59 + android:layout_width="56dp"
60 + android:layout_height="24dp"
61 + android:layout_alignParentEnd="true"
62 + android:layout_marginTop="8dp"
63 + android:layout_marginEnd="10dp"
64 + android:scaleType="centerCrop"
65 + android:src="@drawable/ic_new_icon"
66 + android:translationZ="2dp"
67 + android:visibility="gone"
68 + app:layout_constraintEnd_toEndOf="parent"
69 + app:layout_constraintTop_toTopOf="parent"
70 + tools:visibility="visible" />
71 +</RelativeLayout>
...\ No newline at end of file ...\ No newline at end of file
......
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 -<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto" 3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools" 4 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent" 5 android:layout_width="match_parent"
6 android:layout_height="240dp" 6 android:layout_height="240dp"
7 android:layout_marginBottom="16dp" 7 android:layout_marginBottom="16dp"
8 + android:background="@android:color/transparent">
9 +
10 + <androidx.cardview.widget.CardView
11 + android:layout_width="match_parent"
12 + android:layout_height="240dp"
13 + android:layout_marginHorizontal="16dp"
14 + android:background="@android:color/transparent"
8 app:cardCornerRadius="5dp"> 15 app:cardCornerRadius="5dp">
9 16
10 <androidx.constraintlayout.widget.ConstraintLayout 17 <androidx.constraintlayout.widget.ConstraintLayout
...@@ -53,7 +60,7 @@ ...@@ -53,7 +60,7 @@
53 android:layout_height="wrap_content" 60 android:layout_height="wrap_content"
54 android:layout_marginHorizontal="12dp" 61 android:layout_marginHorizontal="12dp"
55 android:layout_marginTop="20dp" 62 android:layout_marginTop="20dp"
56 - android:maxLines="2" 63 + android:maxLines="4"
57 android:textColor="@color/blue_dark" 64 android:textColor="@color/blue_dark"
58 android:textSize="18sp" 65 android:textSize="18sp"
59 android:textStyle="bold" 66 android:textStyle="bold"
...@@ -67,7 +74,21 @@ ...@@ -67,7 +74,21 @@
67 android:layout_width="0dp" 74 android:layout_width="0dp"
68 android:layout_height="wrap_content" 75 android:layout_height="wrap_content"
69 android:layout_marginHorizontal="12dp" 76 android:layout_marginHorizontal="12dp"
70 - android:layout_marginBottom="20dp" 77 + android:layout_marginTop="6dp"
78 + android:maxLines="4"
79 + android:textColor="@color/blue_dark"
80 + android:textSize="16sp"
81 + app:layout_constraintEnd_toStartOf="@+id/gl_vertical_80_percent_inner"
82 + app:layout_constraintStart_toStartOf="parent"
83 + app:layout_constraintTop_toBottomOf="@+id/tv_campaign_title"
84 + tools:text="Σπάσε την πινιάτα και κέρδισε μοναδικά δώρα εσύ και το ταίρι σου!" />
85 +
86 + <TextView
87 + android:id="@+id/tv_campaign_message"
88 + android:layout_width="0dp"
89 + android:layout_height="wrap_content"
90 + android:layout_marginHorizontal="12dp"
91 + android:layout_marginBottom="16dp"
71 android:maxLines="4" 92 android:maxLines="4"
72 android:textColor="@color/blue_dark" 93 android:textColor="@color/blue_dark"
73 android:textSize="16sp" 94 android:textSize="16sp"
...@@ -78,4 +99,20 @@ ...@@ -78,4 +99,20 @@
78 tools:text="Σπάσε την πινιάτα και κέρδισε μοναδικά δώρα εσύ και το ταίρι σου!" /> 99 tools:text="Σπάσε την πινιάτα και κέρδισε μοναδικά δώρα εσύ και το ταίρι σου!" />
79 </androidx.constraintlayout.widget.ConstraintLayout> 100 </androidx.constraintlayout.widget.ConstraintLayout>
80 </androidx.constraintlayout.widget.ConstraintLayout> 101 </androidx.constraintlayout.widget.ConstraintLayout>
81 -</androidx.cardview.widget.CardView>
...\ No newline at end of file ...\ No newline at end of file
102 + </androidx.cardview.widget.CardView>
103 +
104 + <ImageView
105 + android:id="@+id/iv_campaign_new"
106 + android:layout_width="56dp"
107 + android:layout_height="24dp"
108 + android:layout_alignParentEnd="true"
109 + android:layout_marginTop="8dp"
110 + android:layout_marginEnd="12dp"
111 + android:scaleType="centerCrop"
112 + android:src="@drawable/ic_new_icon"
113 + android:translationZ="2dp"
114 + android:visibility="gone"
115 + app:layout_constraintEnd_toEndOf="parent"
116 + app:layout_constraintTop_toTopOf="parent"
117 + tools:visibility="visible" />
118 +</RelativeLayout>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -61,11 +61,11 @@ ...@@ -61,11 +61,11 @@
61 <string name="cos_past_all_coupons">Παλαιότερα κουπόνια</string> 61 <string name="cos_past_all_coupons">Παλαιότερα κουπόνια</string>
62 <string name="cos_coupon_expired_date">Εξαργυρώθηκε την %1$s</string> 62 <string name="cos_coupon_expired_date">Εξαργυρώθηκε την %1$s</string>
63 <string name="cos_popup_gifts_title">COSMOTE GIFTS FOR YOU</string> 63 <string name="cos_popup_gifts_title">COSMOTE GIFTS FOR YOU</string>
64 - <string name="cos_popup_gifts_subtitle">Εδώ μπορείς να βρεις τα διαθέσιμα\nδώρα και προσφορές!</string> 64 + <string name="cos_popup_gifts_subtitle">Σε αυτή την ενότητα βρίσκεις τα διαθέσιμα δώρα και επιβραβεύσεις αποκλειστικά για σένα!</string>
65 <string name="cos_mycoupon_date">Το κουπόνι ισχύει έως %1$s</string> 65 <string name="cos_mycoupon_date">Το κουπόνι ισχύει έως %1$s</string>
66 <string name="cos_gift_it">Κάντο δώρο!</string> 66 <string name="cos_gift_it">Κάντο δώρο!</string>
67 <string name="cos_popup_more_title">COSMOTE MORE FOR YOU</string> 67 <string name="cos_popup_more_title">COSMOTE MORE FOR YOU</string>
68 - <string name="cos_popup_more_subtitle">Εδώ μπορείς να βρεις διαγωνισμούς και\nνα σε επιβραβεύσουμε για τις αθλητικές σου\nδραστηριότητες!</string> 68 + <string name="cos_popup_more_subtitle">Σε αυτή την ενότητα βρες έρευνες, παιχνίδια, διαγωνισμούς και επιβραβεύσεις για τις αθλητικές σου δραστηριότητες!</string>
69 <string name="cos_deals_win_title">Μέχρι τώρα έχεις κερδίσει %1$s€ σε προσφορές από %2$s κουπόνια!</string> 69 <string name="cos_deals_win_title">Μέχρι τώρα έχεις κερδίσει %1$s€ σε προσφορές από %2$s κουπόνια!</string>
70 <string name="cos_deals_win_title_cos">Μέχρι τώρα έχεις κερδίσει %1$s€ με το DEALS for YOU!</string> 70 <string name="cos_deals_win_title_cos">Μέχρι τώρα έχεις κερδίσει %1$s€ με το DEALS for YOU!</string>
71 <string name="cos_mygifts">Τα δώρα μου</string> 71 <string name="cos_mygifts">Τα δώρα μου</string>
...@@ -84,6 +84,7 @@ ...@@ -84,6 +84,7 @@
84 <string name="cos_dlg_reject_text">Είσαι σίγουρος ότι θέλεις να απορρίψεις το δώρο που μόλις έλαβες;</string> 84 <string name="cos_dlg_reject_text">Είσαι σίγουρος ότι θέλεις να απορρίψεις το δώρο που μόλις έλαβες;</string>
85 <string name="cos_dlg_return_text">Έλαβες πίσω το δώρο σου, κουπόνι αξίας 100€ για τα Intersport</string> 85 <string name="cos_dlg_return_text">Έλαβες πίσω το δώρο σου, κουπόνι αξίας 100€ για τα Intersport</string>
86 <string name="cos_dlg_negative_button2">Άκυρο</string> 86 <string name="cos_dlg_negative_button2">Άκυρο</string>
87 + <string name="cos_profile_preferences">+Προτιμήσεις</string>
87 88
88 <string-array name="coupons_array"> 89 <string-array name="coupons_array">
89 <item>Κουπόνια</item> 90 <item>Κουπόνια</item>
......