Panagiotis Triantafyllou

active coupons redesign, gifts for you redesign

...@@ -5,6 +5,7 @@ import android.content.Intent; ...@@ -5,6 +5,7 @@ import android.content.Intent;
5 import android.os.Bundle; 5 import android.os.Bundle;
6 import android.view.View; 6 import android.view.View;
7 import android.widget.ImageView; 7 import android.widget.ImageView;
8 +import android.widget.LinearLayout;
8 import android.widget.TextView; 9 import android.widget.TextView;
9 10
10 import androidx.constraintlayout.widget.ConstraintLayout; 11 import androidx.constraintlayout.widget.ConstraintLayout;
...@@ -15,13 +16,19 @@ import org.json.JSONException; ...@@ -15,13 +16,19 @@ import org.json.JSONException;
15 import org.json.JSONObject; 16 import org.json.JSONObject;
16 17
17 import java.io.Serializable; 18 import java.io.Serializable;
19 +import java.util.ArrayList;
18 import java.util.HashMap; 20 import java.util.HashMap;
19 21
20 import ly.warp.sdk.R; 22 import ly.warp.sdk.R;
21 import ly.warp.sdk.io.models.Campaign; 23 import ly.warp.sdk.io.models.Campaign;
22 import ly.warp.sdk.io.models.CampaignList; 24 import ly.warp.sdk.io.models.CampaignList;
25 +import ly.warp.sdk.io.models.Couponset;
26 +import ly.warp.sdk.io.models.CouponsetsList;
27 +import ly.warp.sdk.io.models.MergedGifts;
28 +import ly.warp.sdk.utils.WarpUtils;
23 import ly.warp.sdk.utils.WarplyManagerHelper; 29 import ly.warp.sdk.utils.WarplyManagerHelper;
24 import ly.warp.sdk.views.adapters.CouponsetsAdapter; 30 import ly.warp.sdk.views.adapters.CouponsetsAdapter;
31 +import ly.warp.sdk.views.adapters.MergedGiftsAdapter;
25 import ly.warp.sdk.views.adapters.ProfileCampaignAdapter; 32 import ly.warp.sdk.views.adapters.ProfileCampaignAdapter;
26 33
27 34
...@@ -35,36 +42,53 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene ...@@ -35,36 +42,53 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene
35 // Fields 42 // Fields
36 // =========================================================== 43 // ===========================================================
37 44
38 - private ImageView mIvBack; 45 + private ImageView mIvBack, mIvPopupClose;
39 - private RecyclerView mRecyclerGifts, mRecyclerRewards, mRecyclerCoupons;
40 private TextView mTvTitle; 46 private TextView mTvTitle;
41 - private ProfileCampaignAdapter mAdapterGifts, mAdapterRewards; 47 + /**** Old functionality ****/
42 - private CouponsetsAdapter mAdapterCoupons; 48 +// private RecyclerView mRecyclerGifts, mRecyclerRewards, mRecyclerCoupons;
43 - private ConstraintLayout mClGiftsOuter, mClRewardsOuter, mClCouponsOuter; 49 +// private ProfileCampaignAdapter mAdapterGifts, mAdapterRewards;
50 +// private CouponsetsAdapter mAdapterCoupons;
51 +// private ConstraintLayout mClGiftsOuter, mClRewardsOuter, mClCouponsOuter;
44 private HashMap<String, CampaignList> mUniqueGiftsList = new HashMap<String, CampaignList>(); 52 private HashMap<String, CampaignList> mUniqueGiftsList = new HashMap<String, CampaignList>();
53 + /**** Old functionality ****/
54 + private LinearLayout mLlGiftsPopup;
55 + private ArrayList<MergedGifts> mData = new ArrayList();
56 + private RecyclerView mRecyclerMergedGifts;
57 + private MergedGiftsAdapter mAdapterMergedGifts;
45 58
46 // =========================================================== 59 // ===========================================================
47 // Methods for/from SuperClass/Interfaces 60 // Methods for/from SuperClass/Interfaces
48 // =========================================================== 61 // ===========================================================
49 -
50 @Override 62 @Override
51 public void onCreate(Bundle savedInstanceState) { 63 public void onCreate(Bundle savedInstanceState) {
52 super.onCreate(savedInstanceState); 64 super.onCreate(savedInstanceState);
53 setContentView(R.layout.activity_gifts_for_you); 65 setContentView(R.layout.activity_gifts_for_you);
54 66
55 - getCampaignsBySubcategory(); 67 + /**** Old functionality ****/
68 +// getCampaignsBySubcategory();
69 + /**** Old functionality ****/
70 + mergeDatasets(
71 + WarplyManagerHelper.getUniqueCampaignList().get("gifts_for_you"),
72 + WarplyManagerHelper.getCouponsets()
73 + );
56 74
57 mIvBack = findViewById(R.id.iv_list_close); 75 mIvBack = findViewById(R.id.iv_list_close);
58 mTvTitle = findViewById(R.id.textView3); 76 mTvTitle = findViewById(R.id.textView3);
77 + mIvPopupClose = findViewById(R.id.iv_popup_gifts_close);
78 + mLlGiftsPopup = findViewById(R.id.ll_gifts_popup);
79 +
80 + /**** Old functionality ****/
81 +// mClGiftsOuter = findViewById(R.id.cl_recycler_inner);
82 +// mRecyclerGifts = findViewById(R.id.rv_gifts);
59 83
60 - mClGiftsOuter = findViewById(R.id.cl_recycler_inner); 84 +// mClRewardsOuter = findViewById(R.id.cl_recycler_inner2);
61 - mRecyclerGifts = findViewById(R.id.rv_gifts); 85 +// mRecyclerRewards = findViewById(R.id.rv_rewards);
62 86
63 - mClRewardsOuter = findViewById(R.id.cl_recycler_inner2); 87 +// mClCouponsOuter = findViewById(R.id.cl_recycler_inner3);
64 - mRecyclerRewards = findViewById(R.id.rv_rewards); 88 +// mRecyclerCoupons = findViewById(R.id.rv_coupons);
89 + /**** Old functionality ****/
65 90
66 - mClCouponsOuter = findViewById(R.id.cl_recycler_inner3); 91 + mRecyclerMergedGifts = findViewById(R.id.rv_merged_gifts);
67 - mRecyclerCoupons = findViewById(R.id.rv_coupons);
68 92
69 initViews(); 93 initViews();
70 } 94 }
...@@ -78,6 +102,11 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene ...@@ -78,6 +102,11 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene
78 public void onClick(View view) { 102 public void onClick(View view) {
79 if (view.getId() == R.id.iv_list_close) { 103 if (view.getId() == R.id.iv_list_close) {
80 onBackPressed(); 104 onBackPressed();
105 + return;
106 + }
107 + if (view.getId() == R.id.iv_popup_gifts_close) {
108 + mLlGiftsPopup.setVisibility(View.GONE);
109 + WarpUtils.setGiftsPopup(this, false);
81 } 110 }
82 } 111 }
83 112
...@@ -88,52 +117,79 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene ...@@ -88,52 +117,79 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene
88 private void initViews() { 117 private void initViews() {
89 mIvBack.setOnClickListener(this); 118 mIvBack.setOnClickListener(this);
90 mTvTitle.setText(getIntent().getStringExtra("title")); 119 mTvTitle.setText(getIntent().getStringExtra("title"));
91 - 120 + mIvPopupClose.setOnClickListener(this);
92 - if (mUniqueGiftsList.get("gifts") != null && mUniqueGiftsList.get("gifts").size() > 0) { 121 +
93 - mRecyclerGifts.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); 122 + if (WarpUtils.getGiftsPopup(this))
94 - mAdapterGifts = new ProfileCampaignAdapter(this, mUniqueGiftsList.get("gifts")); 123 + mLlGiftsPopup.setVisibility(View.VISIBLE);
95 - mRecyclerGifts.setAdapter(mAdapterGifts); 124 +
96 - mAdapterGifts.getPositionClicks() 125 + /**** Old functionality ****/
97 - .doOnNext(gift -> { 126 +// if (mUniqueGiftsList.get("gifts") != null && mUniqueGiftsList.get("gifts").size() > 0) {
98 - startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(gift))); 127 +// mRecyclerGifts.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
99 - }) 128 +// mAdapterGifts = new ProfileCampaignAdapter(this, mUniqueGiftsList.get("gifts"));
100 - .doOnError(error -> { 129 +// mRecyclerGifts.setAdapter(mAdapterGifts);
101 - }) 130 +// mAdapterGifts.getPositionClicks()
102 - .subscribe(); 131 +// .doOnNext(gift -> {
103 - } else { 132 +// startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(gift)));
104 - mClGiftsOuter.setVisibility(View.GONE); 133 +// })
105 - } 134 +// .doOnError(error -> {
106 - 135 +// })
107 - if (mUniqueGiftsList.get("rewards") != null && mUniqueGiftsList.get("rewards").size() > 0) { 136 +// .subscribe();
108 - mRecyclerRewards.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); 137 +// } else {
109 - mAdapterRewards = new ProfileCampaignAdapter(this, mUniqueGiftsList.get("rewards")); 138 +// mClGiftsOuter.setVisibility(View.GONE);
110 - mRecyclerRewards.setAdapter(mAdapterRewards); 139 +// }
111 - mAdapterRewards.getPositionClicks() 140 +
112 - .doOnNext(reward -> { 141 +// if (mUniqueGiftsList.get("rewards") != null && mUniqueGiftsList.get("rewards").size() > 0) {
113 - startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(reward))); 142 +// mRecyclerRewards.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
114 - }) 143 +// mAdapterRewards = new ProfileCampaignAdapter(this, mUniqueGiftsList.get("rewards"));
115 - .doOnError(error -> { 144 +// mRecyclerRewards.setAdapter(mAdapterRewards);
116 - }) 145 +// mAdapterRewards.getPositionClicks()
117 - .subscribe(); 146 +// .doOnNext(reward -> {
118 - } else { 147 +// startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(reward)));
119 - mClRewardsOuter.setVisibility(View.GONE); 148 +// })
120 - } 149 +// .doOnError(error -> {
121 - 150 +// })
122 - if (WarplyManagerHelper.getCouponsets() != null && WarplyManagerHelper.getCouponsets().size() > 0) { 151 +// .subscribe();
123 - mRecyclerCoupons.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); 152 +// } else {
124 - mAdapterCoupons = new CouponsetsAdapter(this, WarplyManagerHelper.getCouponsets()); 153 +// mClRewardsOuter.setVisibility(View.GONE);
125 - mRecyclerCoupons.setAdapter(mAdapterCoupons); 154 +// }
126 - mAdapterCoupons.getPositionClicks() 155 +
127 - .doOnNext(couponset -> { 156 +// if (WarplyManagerHelper.getCouponsets() != null && WarplyManagerHelper.getCouponsets().size() > 0) {
157 +// mRecyclerCoupons.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
158 +// mAdapterCoupons = new CouponsetsAdapter(this, WarplyManagerHelper.getCouponsets());
159 +// mRecyclerCoupons.setAdapter(mAdapterCoupons);
160 +// mAdapterCoupons.getPositionClicks()
161 +// .doOnNext(couponset -> {
162 +// Intent intent = new Intent(GiftsForYouActivity.this, CouponsetInfoActivity.class);
163 +// intent.putExtra("couponset", (Serializable) couponset);
164 +// startActivity(intent);
165 +// })
166 +// .doOnError(error -> {
167 +// })
168 +// .subscribe();
169 +// } else {
170 +// mClCouponsOuter.setVisibility(View.GONE);
171 +// }
172 + /**** Old functionality ****/
173 +
174 + if (mData != null && mData.size() > 0) {
175 + mRecyclerMergedGifts.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
176 + mAdapterMergedGifts = new MergedGiftsAdapter(this, mData);
177 + mRecyclerMergedGifts.setAdapter(mAdapterMergedGifts);
178 + mAdapterMergedGifts.getPositionClicks()
179 + .doOnNext(dataItem -> {
180 + if (dataItem.getDataType() == 1) {
181 + startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(dataItem.getCampaign())));
182 + } else if (dataItem.getDataType() == 2) {
128 Intent intent = new Intent(GiftsForYouActivity.this, CouponsetInfoActivity.class); 183 Intent intent = new Intent(GiftsForYouActivity.this, CouponsetInfoActivity.class);
129 - intent.putExtra("couponset", (Serializable) couponset); 184 + intent.putExtra("couponset", (Serializable) dataItem.getCouponset());
130 startActivity(intent); 185 startActivity(intent);
186 + }
131 }) 187 })
132 .doOnError(error -> { 188 .doOnError(error -> {
133 }) 189 })
134 .subscribe(); 190 .subscribe();
135 } else { 191 } else {
136 - mClCouponsOuter.setVisibility(View.GONE); 192 +// mClCouponsOuter.setVisibility(View.GONE);
137 } 193 }
138 } 194 }
139 195
...@@ -162,6 +218,30 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene ...@@ -162,6 +218,30 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene
162 } 218 }
163 } 219 }
164 220
221 + private ArrayList<MergedGifts> mergeDatasets(CampaignList campaignList, CouponsetsList couponsetsList) {
222 + if (campaignList.size() > 0) {
223 + for (Campaign campaign : campaignList) {
224 + MergedGifts data = new MergedGifts();
225 + data.setCampaign(campaign);
226 + data.setCouponset(null);
227 + data.setDataType(1);
228 + mData.add(data);
229 + }
230 + }
231 +
232 + if (couponsetsList.size() > 0) {
233 + for (Couponset couponset : couponsetsList) {
234 + MergedGifts data = new MergedGifts();
235 + data.setCampaign(null);
236 + data.setCouponset(couponset);
237 + data.setDataType(2);
238 + mData.add(data);
239 + }
240 + }
241 +
242 + return mData;
243 + }
244 +
165 // =========================================================== 245 // ===========================================================
166 // Inner and Anonymous Classes 246 // Inner and Anonymous Classes
167 // =========================================================== 247 // ===========================================================
......
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 + * Created by Panagiotis Triantafyllou on 10-May-22.
30 + */
31 +
32 +public class MergedGifts {
33 + private int dataType = 0;
34 + private Couponset couponset;
35 + private Campaign campaign;
36 +
37 + public void setDataType(int dataType) {
38 + this.dataType = dataType;
39 + }
40 +
41 + public void setCouponset(Couponset couponset) {
42 + this.couponset = couponset;
43 + }
44 +
45 + public void setCampaign(Campaign campaign) {
46 + this.campaign = campaign;
47 + }
48 +
49 + public int getDataType() {
50 + return dataType;
51 + }
52 +
53 + public Couponset getCouponset() {
54 + return couponset;
55 + }
56 +
57 + public Campaign getCampaign() {
58 + return campaign;
59 + }
60 +}
...@@ -127,6 +127,10 @@ public class WarpUtils { ...@@ -127,6 +127,10 @@ public class WarpUtils {
127 + "device_info_data"; 127 + "device_info_data";
128 private static final String PREFERENCES_KEY_LIFECYCLE_ANALYTICS_ENABLED = PREFERENCES_PREFIX 128 private static final String PREFERENCES_KEY_LIFECYCLE_ANALYTICS_ENABLED = PREFERENCES_PREFIX
129 + "lifecycle_analytics_enabled"; 129 + "lifecycle_analytics_enabled";
130 + private static final String PREFERENCES_KEY_GIFTS_POPUP = PREFERENCES_PREFIX
131 + + "gifts_popup";
132 + private static final String PREFERENCES_KEY_MORE_POPUP = PREFERENCES_PREFIX
133 + + "more_popup";
130 134
131 private static SharedPreferences _prefs; 135 private static SharedPreferences _prefs;
132 136
...@@ -180,6 +184,28 @@ public class WarpUtils { ...@@ -180,6 +184,28 @@ public class WarpUtils {
180 editor.apply(); 184 editor.apply();
181 } 185 }
182 186
187 + public static boolean getGiftsPopup(Context context) {
188 + SharedPreferences prefs = getPreferences(context);
189 + return prefs.getBoolean(PREFERENCES_KEY_GIFTS_POPUP, true);
190 + }
191 +
192 + public static void setGiftsPopup(Context context, boolean visible) {
193 + SharedPreferences.Editor editor = getPreferences(context).edit();
194 + editor.putBoolean(PREFERENCES_KEY_GIFTS_POPUP, visible);
195 + editor.apply();
196 + }
197 +
198 + public static boolean getMorePopup(Context context) {
199 + SharedPreferences prefs = getPreferences(context);
200 + return prefs.getBoolean(PREFERENCES_KEY_MORE_POPUP, true);
201 + }
202 +
203 + public static void setMorePopup(Context context, boolean visible) {
204 + SharedPreferences.Editor editor = getPreferences(context).edit();
205 + editor.putBoolean(PREFERENCES_KEY_MORE_POPUP, visible);
206 + editor.apply();
207 + }
208 +
183 static boolean isRegisteredGCMOrWaiting(Context context) { 209 static boolean isRegisteredGCMOrWaiting(Context context) {
184 210
185 return isRegisteredGCM(context) || isWaitingGCM(context); 211 return isRegisteredGCM(context) || isWaitingGCM(context);
......
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 +import java.util.Date;
20 +import java.util.concurrent.TimeUnit;
21 +
22 +import io.reactivex.Observable;
23 +import io.reactivex.subjects.PublishSubject;
24 +import ly.warp.sdk.R;
25 +import ly.warp.sdk.io.models.MergedGifts;
26 +
27 +public class MergedGiftsAdapter extends RecyclerView.Adapter<MergedGiftsAdapter.MergedGiftsViewHolder> {
28 +
29 + private Context mContext;
30 + private ArrayList<MergedGifts> mMergedGifts;
31 + private final PublishSubject<MergedGifts> onClickSubject = PublishSubject.create();
32 +
33 + public MergedGiftsAdapter(Context mContext, ArrayList<MergedGifts> mergedgifts) {
34 + this.mContext = mContext;
35 + this.mMergedGifts = mergedgifts;
36 + }
37 +
38 + public class MergedGiftsViewHolder extends RecyclerView.ViewHolder {
39 + private ImageView ivMergedGiftsLogo;
40 + private TextView tvMergedGiftsTitle;
41 +
42 + public MergedGiftsViewHolder(View view) {
43 + super(view);
44 + ivMergedGiftsLogo = view.findViewById(R.id.iv_campaign_logo);
45 + tvMergedGiftsTitle = view.findViewById(R.id.tv_campaign_title);
46 + }
47 + }
48 +
49 + @Override
50 + public int getItemCount() {
51 + if (mMergedGifts == null)
52 + return 0;
53 + else
54 + return mMergedGifts.size();
55 + }
56 +
57 +
58 + public MergedGifts getItem(int id) {
59 + return mMergedGifts.get(id);
60 + }
61 +
62 + public void updateData(ArrayList<MergedGifts> mergedgifts) {
63 + mMergedGifts.clear();
64 + mMergedGifts.addAll(mergedgifts);
65 + notifyDataSetChanged();
66 + }
67 +
68 +
69 + @Override
70 + public MergedGiftsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
71 + View itemView;
72 + itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_merged_gifts_recycler, parent, false);
73 + return new MergedGiftsViewHolder(itemView);
74 + }
75 +
76 + @Override
77 + public void onBindViewHolder(final MergedGiftsViewHolder holder, int position) {
78 + MergedGifts mergedgiftsItem = mMergedGifts.get(position);
79 + if (mergedgiftsItem != null && mergedgiftsItem.getDataType() == 1) {
80 + if (!TextUtils.isEmpty(mergedgiftsItem.getCampaign().getLogoUrl())) {
81 + Glide.with(mContext)
82 + .load(mergedgiftsItem.getCampaign().getLogoUrl())
83 + .transform(new CenterCrop(), new RoundedCorners(4))
84 + .diskCacheStrategy(DiskCacheStrategy.DATA)
85 + .into(holder.ivMergedGiftsLogo);
86 + } else {
87 + Glide.with(mContext)
88 + .load(R.drawable.ic_cosmote_logo_horizontal_grey)
89 + .into(holder.ivMergedGiftsLogo);
90 + }
91 +
92 + holder.tvMergedGiftsTitle.setText(mergedgiftsItem.getCampaign().getTitle());
93 + } else if (mergedgiftsItem != null && mergedgiftsItem.getDataType() == 2) {
94 + if (!TextUtils.isEmpty(mergedgiftsItem.getCouponset().getImgPreview())) {
95 + Glide.with(mContext)
96 +// .setDefaultRequestOptions(
97 +// RequestOptions
98 +// .placeholderOf(R.drawable.ic_default_contact_photo)
99 +// .error(R.drawable.ic_default_contact_photo))
100 + .load(mergedgiftsItem.getCouponset().getImgPreview())
101 + .diskCacheStrategy(DiskCacheStrategy.DATA)
102 + .into(holder.ivMergedGiftsLogo);
103 + } else {
104 + Glide.with(mContext)
105 + .load(R.drawable.ic_cosmote_logo_horizontal_grey)
106 + .into(holder.ivMergedGiftsLogo);
107 + }
108 +
109 + holder.tvMergedGiftsTitle.setText(mergedgiftsItem.getCouponset().getName());
110 +// holder.tvMergedGiftsTitle.setText(Html.fromHtml(mergedgiftsItem.getCouponset().getDescription()));
111 +
112 +// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
113 +// Date newDate = new Date();
114 +// try {
115 +// newDate = simpleDateFormat.parse(mergedgiftsItem.getExpiration());
116 +// } catch (ParseException e) {
117 +// e.printStackTrace();
118 +// }
119 +// simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
120 +// holder.tvCouponDate.setText(String.format(mContext.getString(R.string.cos_coupon_date), simpleDateFormat.format(newDate != null ? newDate : "")));
121 +//
122 +// holder.tvCouponValue.setText(mergedgiftsItem.getDiscount());
123 + }
124 + holder.itemView.setOnClickListener(v -> onClickSubject.onNext(mergedgiftsItem));
125 + }
126 +
127 + public Observable<MergedGifts> getPositionClicks() {
128 + return onClickSubject.cache();
129 + }
130 +
131 + private long getDifferenceDays(Date d1, Date d2) {
132 + long diff = d2.getTime() - d1.getTime();
133 + return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
134 + }
135 +}
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:shape="rectangle">
4 + <gradient
5 + android:startColor="@color/cos_blue3"
6 + android:endColor="@color/cos_green8"
7 + android:type="linear"/>
8 + <corners
9 + android:radius="8dp"/>
10 +</shape>
...\ No newline at end of file ...\ No newline at end of file
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
25 <shape xmlns:android="http://schemas.android.com/apk/res/android" 25 <shape xmlns:android="http://schemas.android.com/apk/res/android"
26 android:shape="rectangle"> 26 android:shape="rectangle">
27 <corners android:topLeftRadius="30dp" /> 27 <corners android:topLeftRadius="30dp" />
28 - <solid android:color="@color/grey_light" /> 28 + <solid android:color="@color/cos_grey5" />
29 29
30 <!-- <stroke--> 30 <!-- <stroke-->
31 <!-- android:width="1dp"--> 31 <!-- android:width="1dp"-->
......
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 -<ScrollView 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"
5 - android:layout_width="match_parent"
6 - android:layout_height="match_parent"
7 - android:background="@android:color/white"
8 - android:fillViewport="true">
9 -
10 - <LinearLayout
11 android:id="@+id/cl_bill_payment" 4 android:id="@+id/cl_bill_payment"
12 android:layout_width="match_parent" 5 android:layout_width="match_parent"
13 android:layout_height="match_parent" 6 android:layout_height="match_parent"
7 + android:background="@android:color/white"
14 android:orientation="vertical"> 8 android:orientation="vertical">
15 9
16 <androidx.constraintlayout.widget.ConstraintLayout 10 <androidx.constraintlayout.widget.ConstraintLayout
17 android:id="@+id/cl_bill_header" 11 android:id="@+id/cl_bill_header"
18 android:layout_width="match_parent" 12 android:layout_width="match_parent"
19 android:layout_height="80dp" 13 android:layout_height="80dp"
20 - app:layout_constraintTop_toTopOf="parent"> 14 + android:background="@android:color/white">
21 15
22 <ImageView 16 <ImageView
23 android:id="@+id/iv_list_close" 17 android:id="@+id/iv_list_close"
...@@ -47,119 +41,172 @@ ...@@ -47,119 +41,172 @@
47 <RelativeLayout 41 <RelativeLayout
48 android:layout_width="match_parent" 42 android:layout_width="match_parent"
49 android:layout_height="match_parent" 43 android:layout_height="match_parent"
50 - android:background="@drawable/shape_cos_profile_gradient" 44 + android:background="@drawable/shape_cos_loyalty"
51 - android:orientation="vertical" 45 + android:orientation="vertical">
52 - android:paddingBottom="24dp">
53 -
54 - <androidx.constraintlayout.widget.ConstraintLayout
55 - android:id="@+id/cl_recycler_inner"
56 - android:layout_width="match_parent"
57 - android:layout_height="wrap_content"
58 - android:layout_marginTop="36dp"
59 - android:paddingBottom="4dp"
60 - app:layout_constraintLeft_toLeftOf="parent"
61 - app:layout_constraintRight_toRightOf="parent"
62 - app:layout_constraintTop_toTopOf="parent">
63 -
64 - <TextView
65 - android:id="@+id/tv_gifts_title"
66 - android:layout_width="wrap_content"
67 - android:layout_height="wrap_content"
68 - android:layout_marginStart="10dp"
69 - android:text="@string/cos_gifts_title2"
70 - android:textColor="@android:color/white"
71 - android:textSize="18sp"
72 - android:textStyle="bold"
73 - app:layout_constraintStart_toStartOf="parent"
74 - app:layout_constraintTop_toTopOf="parent" />
75 46
76 - <androidx.recyclerview.widget.RecyclerView 47 + <LinearLayout
77 - android:id="@+id/rv_gifts" 48 + android:id="@+id/ll_gifts_popup"
78 android:layout_width="match_parent" 49 android:layout_width="match_parent"
79 android:layout_height="wrap_content" 50 android:layout_height="wrap_content"
80 android:layout_marginTop="24dp" 51 android:layout_marginTop="24dp"
81 - android:clipToPadding="false" 52 + android:background="@drawable/shape_cos_gradient5"
82 - android:orientation="horizontal" 53 + android:orientation="vertical"
83 - android:paddingEnd="10dp" 54 + android:paddingVertical="16dp"
84 - app:layout_constraintBottom_toBottomOf="parent" 55 + android:visibility="gone">
85 - app:layout_constraintLeft_toLeftOf="parent"
86 - app:layout_constraintRight_toRightOf="parent"
87 - app:layout_constraintTop_toBottomOf="@+id/tv_gifts_title" />
88 - </androidx.constraintlayout.widget.ConstraintLayout>
89 56
90 - <androidx.constraintlayout.widget.ConstraintLayout 57 + <ImageView
91 - android:id="@+id/cl_recycler_inner2" 58 + android:id="@+id/iv_popup_gifts_close"
92 - android:layout_width="match_parent" 59 + android:layout_width="20dp"
60 + android:layout_height="20dp"
61 + android:layout_marginStart="16dp"
62 + android:src="@drawable/ic_close_white" />
63 +
64 + <ImageView
65 + android:layout_width="wrap_content"
93 android:layout_height="wrap_content" 66 android:layout_height="wrap_content"
94 - android:layout_below="@+id/cl_recycler_inner" 67 + android:layout_gravity="center"
95 - android:layout_marginTop="36dp" 68 + android:scaleType="centerInside"
96 - android:paddingBottom="4dp" 69 + android:src="@drawable/ic_gifts_for_you_white" />
97 - app:layout_constraintLeft_toLeftOf="parent"
98 - app:layout_constraintRight_toRightOf="parent"
99 - app:layout_constraintTop_toTopOf="parent">
100 70
101 <TextView 71 <TextView
102 - android:id="@+id/tv_rewards_title"
103 android:layout_width="wrap_content" 72 android:layout_width="wrap_content"
104 android:layout_height="wrap_content" 73 android:layout_height="wrap_content"
105 - android:layout_marginStart="10dp" 74 + android:layout_gravity="center"
106 - android:text="@string/cos_rewards_title" 75 + android:layout_marginTop="24dp"
76 + android:layout_marginBottom="12dp"
77 + android:text="@string/cos_popup_gifts_title"
107 android:textColor="@android:color/white" 78 android:textColor="@android:color/white"
108 android:textSize="18sp" 79 android:textSize="18sp"
109 - android:textStyle="bold" 80 + android:textStyle="bold" />
110 - app:layout_constraintStart_toStartOf="parent"
111 - app:layout_constraintTop_toTopOf="parent" />
112 -
113 - <androidx.recyclerview.widget.RecyclerView
114 - android:id="@+id/rv_rewards"
115 - android:layout_width="match_parent"
116 - android:layout_height="wrap_content"
117 - android:layout_marginTop="24dp"
118 - android:clipToPadding="false"
119 - android:orientation="horizontal"
120 - android:paddingEnd="10dp"
121 - app:layout_constraintBottom_toBottomOf="parent"
122 - app:layout_constraintLeft_toLeftOf="parent"
123 - app:layout_constraintRight_toRightOf="parent"
124 - app:layout_constraintTop_toBottomOf="@+id/tv_rewards_title" />
125 - </androidx.constraintlayout.widget.ConstraintLayout>
126 -
127 - <androidx.constraintlayout.widget.ConstraintLayout
128 - android:id="@+id/cl_recycler_inner3"
129 - android:layout_width="match_parent"
130 - android:layout_height="wrap_content"
131 - android:layout_below="@+id/cl_recycler_inner2"
132 - android:layout_marginTop="36dp"
133 - android:paddingBottom="4dp"
134 - app:layout_constraintLeft_toLeftOf="parent"
135 - app:layout_constraintRight_toRightOf="parent"
136 - app:layout_constraintTop_toTopOf="parent">
137 81
138 <TextView 82 <TextView
139 - android:id="@+id/tv_coupons_title"
140 android:layout_width="wrap_content" 83 android:layout_width="wrap_content"
141 android:layout_height="wrap_content" 84 android:layout_height="wrap_content"
142 - android:layout_marginStart="10dp" 85 + android:layout_gravity="center"
143 - android:text="@string/cos_coupons_title" 86 + android:gravity="center"
87 + android:text="@string/cos_popup_gifts_subtitle"
144 android:textColor="@android:color/white" 88 android:textColor="@android:color/white"
145 - android:textSize="18sp" 89 + android:textSize="16sp" />
146 - android:textStyle="bold" 90 + </LinearLayout>
147 - app:layout_constraintStart_toStartOf="parent"
148 - app:layout_constraintTop_toTopOf="parent" />
149 91
150 <androidx.recyclerview.widget.RecyclerView 92 <androidx.recyclerview.widget.RecyclerView
151 - android:id="@+id/rv_coupons" 93 + android:id="@+id/rv_merged_gifts"
152 android:layout_width="match_parent" 94 android:layout_width="match_parent"
153 android:layout_height="wrap_content" 95 android:layout_height="wrap_content"
154 - android:layout_marginTop="24dp" 96 + android:layout_below="@+id/ll_gifts_popup"
97 + android:layout_marginTop="4dp"
155 android:clipToPadding="false" 98 android:clipToPadding="false"
156 - android:orientation="horizontal" 99 + android:orientation="vertical"
157 - android:paddingEnd="24dp" 100 + android:paddingTop="44dp" />
158 - app:layout_constraintBottom_toBottomOf="parent" 101 +
159 - app:layout_constraintLeft_toLeftOf="parent" 102 + <!-- <androidx.constraintlayout.widget.ConstraintLayout-->
160 - app:layout_constraintRight_toRightOf="parent" 103 + <!-- android:id="@+id/cl_recycler_inner"-->
161 - app:layout_constraintTop_toBottomOf="@+id/tv_coupons_title" /> 104 + <!-- android:layout_width="match_parent"-->
162 - </androidx.constraintlayout.widget.ConstraintLayout> 105 + <!-- android:layout_height="wrap_content"-->
106 + <!-- android:layout_marginTop="36dp"-->
107 + <!-- android:paddingBottom="4dp"-->
108 + <!-- app:layout_constraintLeft_toLeftOf="parent"-->
109 + <!-- app:layout_constraintRight_toRightOf="parent"-->
110 + <!-- app:layout_constraintTop_toTopOf="parent">-->
111 +
112 + <!-- <TextView-->
113 + <!-- android:id="@+id/tv_gifts_title"-->
114 + <!-- android:layout_width="wrap_content"-->
115 + <!-- android:layout_height="wrap_content"-->
116 + <!-- android:layout_marginStart="10dp"-->
117 + <!-- android:text="@string/cos_gifts_title2"-->
118 + <!-- android:textColor="@android:color/white"-->
119 + <!-- android:textSize="18sp"-->
120 + <!-- android:textStyle="bold"-->
121 + <!-- app:layout_constraintStart_toStartOf="parent"-->
122 + <!-- app:layout_constraintTop_toTopOf="parent" />-->
123 +
124 + <!-- <androidx.recyclerview.widget.RecyclerView-->
125 + <!-- android:id="@+id/rv_gifts"-->
126 + <!-- android:layout_width="match_parent"-->
127 + <!-- android:layout_height="wrap_content"-->
128 + <!-- android:layout_marginTop="24dp"-->
129 + <!-- android:clipToPadding="false"-->
130 + <!-- android:orientation="horizontal"-->
131 + <!-- android:paddingEnd="10dp"-->
132 + <!-- app:layout_constraintBottom_toBottomOf="parent"-->
133 + <!-- app:layout_constraintLeft_toLeftOf="parent"-->
134 + <!-- app:layout_constraintRight_toRightOf="parent"-->
135 + <!-- app:layout_constraintTop_toBottomOf="@+id/tv_gifts_title" />-->
136 + <!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
137 +
138 + <!-- <androidx.constraintlayout.widget.ConstraintLayout-->
139 + <!-- android:id="@+id/cl_recycler_inner2"-->
140 + <!-- android:layout_width="match_parent"-->
141 + <!-- android:layout_height="wrap_content"-->
142 + <!-- android:layout_below="@+id/cl_recycler_inner"-->
143 + <!-- android:layout_marginTop="36dp"-->
144 + <!-- android:paddingBottom="4dp"-->
145 + <!-- app:layout_constraintLeft_toLeftOf="parent"-->
146 + <!-- app:layout_constraintRight_toRightOf="parent"-->
147 + <!-- app:layout_constraintTop_toTopOf="parent">-->
148 +
149 + <!-- <TextView-->
150 + <!-- android:id="@+id/tv_rewards_title"-->
151 + <!-- android:layout_width="wrap_content"-->
152 + <!-- android:layout_height="wrap_content"-->
153 + <!-- android:layout_marginStart="10dp"-->
154 + <!-- android:text="@string/cos_rewards_title"-->
155 + <!-- android:textColor="@android:color/white"-->
156 + <!-- android:textSize="18sp"-->
157 + <!-- android:textStyle="bold"-->
158 + <!-- app:layout_constraintStart_toStartOf="parent"-->
159 + <!-- app:layout_constraintTop_toTopOf="parent" />-->
160 +
161 + <!-- <androidx.recyclerview.widget.RecyclerView-->
162 + <!-- android:id="@+id/rv_rewards"-->
163 + <!-- android:layout_width="match_parent"-->
164 + <!-- android:layout_height="wrap_content"-->
165 + <!-- android:layout_marginTop="24dp"-->
166 + <!-- android:clipToPadding="false"-->
167 + <!-- android:orientation="horizontal"-->
168 + <!-- android:paddingEnd="10dp"-->
169 + <!-- app:layout_constraintBottom_toBottomOf="parent"-->
170 + <!-- app:layout_constraintLeft_toLeftOf="parent"-->
171 + <!-- app:layout_constraintRight_toRightOf="parent"-->
172 + <!-- app:layout_constraintTop_toBottomOf="@+id/tv_rewards_title" />-->
173 + <!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
174 +
175 + <!-- <androidx.constraintlayout.widget.ConstraintLayout-->
176 + <!-- android:id="@+id/cl_recycler_inner3"-->
177 + <!-- android:layout_width="match_parent"-->
178 + <!-- android:layout_height="wrap_content"-->
179 + <!-- android:layout_below="@+id/cl_recycler_inner2"-->
180 + <!-- android:layout_marginTop="36dp"-->
181 + <!-- android:paddingBottom="4dp"-->
182 + <!-- app:layout_constraintLeft_toLeftOf="parent"-->
183 + <!-- app:layout_constraintRight_toRightOf="parent"-->
184 + <!-- app:layout_constraintTop_toTopOf="parent">-->
185 +
186 + <!-- <TextView-->
187 + <!-- android:id="@+id/tv_coupons_title"-->
188 + <!-- android:layout_width="wrap_content"-->
189 + <!-- android:layout_height="wrap_content"-->
190 + <!-- android:layout_marginStart="10dp"-->
191 + <!-- android:text="@string/cos_coupons_title"-->
192 + <!-- android:textColor="@android:color/white"-->
193 + <!-- android:textSize="18sp"-->
194 + <!-- android:textStyle="bold"-->
195 + <!-- app:layout_constraintStart_toStartOf="parent"-->
196 + <!-- app:layout_constraintTop_toTopOf="parent" />-->
197 +
198 + <!-- <androidx.recyclerview.widget.RecyclerView-->
199 + <!-- android:id="@+id/rv_coupons"-->
200 + <!-- android:layout_width="match_parent"-->
201 + <!-- android:layout_height="wrap_content"-->
202 + <!-- android:layout_marginTop="24dp"-->
203 + <!-- android:clipToPadding="false"-->
204 + <!-- android:orientation="horizontal"-->
205 + <!-- android:paddingEnd="24dp"-->
206 + <!-- app:layout_constraintBottom_toBottomOf="parent"-->
207 + <!-- app:layout_constraintLeft_toLeftOf="parent"-->
208 + <!-- app:layout_constraintRight_toRightOf="parent"-->
209 + <!-- app:layout_constraintTop_toBottomOf="@+id/tv_coupons_title" />-->
210 + <!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
163 </RelativeLayout> 211 </RelativeLayout>
164 - </LinearLayout>
165 -</ScrollView>
...\ No newline at end of file ...\ No newline at end of file
212 +</LinearLayout>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
93 <RelativeLayout 93 <RelativeLayout
94 android:layout_width="match_parent" 94 android:layout_width="match_parent"
95 android:layout_height="match_parent" 95 android:layout_height="match_parent"
96 - android:background="@drawable/shape_cos_profile_gradient" 96 + android:background="@drawable/shape_cos_loyalty"
97 android:orientation="vertical" 97 android:orientation="vertical"
98 android:paddingBottom="24dp"> 98 android:paddingBottom="24dp">
99 99
......
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
3 + xmlns:app="http://schemas.android.com/apk/res-auto"
4 + xmlns:tools="http://schemas.android.com/tools"
5 + android:layout_width="match_parent"
6 + android:layout_height="150dp"
7 + android:layout_marginHorizontal="16dp"
8 + android:layout_marginBottom="24dp"
9 + app:cardCornerRadius="4dp">
10 +
11 + <androidx.constraintlayout.widget.ConstraintLayout
12 + android:layout_width="match_parent"
13 + android:layout_height="match_parent"
14 + android:background="@drawable/selector_cos_campaign">
15 +
16 + <androidx.constraintlayout.widget.Guideline
17 + android:id="@+id/gl_vertical_60_percent"
18 + android:layout_width="wrap_content"
19 + android:layout_height="wrap_content"
20 + android:orientation="vertical"
21 + app:layout_constraintGuide_percent="0.6" />
22 +
23 + <ImageView
24 + android:id="@+id/iv_campaign_logo"
25 + android:layout_width="0dp"
26 + android:layout_height="0dp"
27 + android:scaleType="centerCrop"
28 + app:layout_constraintBottom_toBottomOf="parent"
29 + app:layout_constraintHorizontal_bias="0.0"
30 + app:layout_constraintLeft_toLeftOf="parent"
31 + app:layout_constraintRight_toLeftOf="@+id/gl_vertical_60_percent"
32 + app:layout_constraintTop_toTopOf="parent"
33 + app:layout_constraintVertical_bias="0.0"
34 + tools:src="@drawable/ic_cosmote_logo_horizontal_grey" />
35 +
36 + <TextView
37 + android:id="@+id/tv_campaign_title"
38 + android:layout_width="0dp"
39 + android:layout_height="wrap_content"
40 + android:layout_marginHorizontal="12dp"
41 + android:gravity="center"
42 + android:maxLines="4"
43 + android:textColor="@color/grey"
44 + app:layout_constraintBottom_toBottomOf="parent"
45 + app:layout_constraintLeft_toRightOf="@+id/gl_vertical_60_percent"
46 + app:layout_constraintRight_toRightOf="parent"
47 + app:layout_constraintTop_toTopOf="parent"
48 + tools:text="-10% in all products from IKEA" />
49 +
50 + </androidx.constraintlayout.widget.ConstraintLayout>
51 +</androidx.cardview.widget.CardView>
...\ No newline at end of file ...\ No newline at end of file
...@@ -40,4 +40,7 @@ ...@@ -40,4 +40,7 @@
40 <color name="cos_dark_blue">#355168</color> 40 <color name="cos_dark_blue">#355168</color>
41 <color name="cos_grey4">#617181</color> 41 <color name="cos_grey4">#617181</color>
42 <color name="grey_light3">#E3E3E3</color> 42 <color name="grey_light3">#E3E3E3</color>
43 + <color name="cos_grey5">#385267</color>
44 + <color name="cos_blue3">#03A1D6</color>
45 + <color name="cos_green8">#3AB588</color>
43 </resources> 46 </resources>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
14 <string name="cos_profile_title">My Loyalty Wallet</string> 14 <string name="cos_profile_title">My Loyalty Wallet</string>
15 <string name="cos_deals_title">Deals for You</string> 15 <string name="cos_deals_title">Deals for You</string>
16 <string name="cos_profile_more">Δες περισσότερα</string> 16 <string name="cos_profile_more">Δες περισσότερα</string>
17 - <string name="cos_gifts_title">Gifts for You</string> 17 + <string name="cos_gifts_title">GIFTS for YOU</string>
18 - <string name="cos_more_title">More for You</string> 18 + <string name="cos_more_title">MORE for YOU</string>
19 <string name="menu_home">Αρχική</string> 19 <string name="menu_home">Αρχική</string>
20 <string name="menu_explore">Ανακάλυψε</string> 20 <string name="menu_explore">Ανακάλυψε</string>
21 <string name="menu_shop">Shop</string> 21 <string name="menu_shop">Shop</string>
...@@ -55,12 +55,14 @@ ...@@ -55,12 +55,14 @@
55 <string name="cos_analysis2">Αναλυτικά</string> 55 <string name="cos_analysis2">Αναλυτικά</string>
56 <string name="euro"></string> 56 <string name="euro"></string>
57 <string name="cos_profile_questionnaire">+ Ερωτηματολόγιο</string> 57 <string name="cos_profile_questionnaire">+ Ερωτηματολόγιο</string>
58 - <string name="cos_active_all_coupons">Όλα τα κουπόνια μου</string> 58 + <string name="cos_active_all_coupons">Ενεργά κουπόνια</string>
59 <string name="cos_active_all_rewards">Όλα τα δώρα μου</string> 59 <string name="cos_active_all_rewards">Όλα τα δώρα μου</string>
60 <string name="cos_no_active_coupons">Δεν υπάρχουν κουπόνια</string> 60 <string name="cos_no_active_coupons">Δεν υπάρχουν κουπόνια</string>
61 <string name="cos_no_active_rewards">Δεν υπάρχουν δώρα</string> 61 <string name="cos_no_active_rewards">Δεν υπάρχουν δώρα</string>
62 <string name="cos_past_all_coupons">Παλαιότερα κουπόνια</string> 62 <string name="cos_past_all_coupons">Παλαιότερα κουπόνια</string>
63 <string name="cos_coupon_expired_date">Εξαργυρώθηκε την %1$s</string> 63 <string name="cos_coupon_expired_date">Εξαργυρώθηκε την %1$s</string>
64 + <string name="cos_popup_gifts_title">COSMOTE GIFTS FOR YOU</string>
65 + <string name="cos_popup_gifts_subtitle">Εδώ μπορείς να βρεις τα διαθέσιμα\nδώρα και προσφορές!</string>
64 66
65 <string-array name="coupons_array"> 67 <string-array name="coupons_array">
66 <item>Κουπόνια</item> 68 <item>Κουπόνια</item>
......