From c3ae8e9081ac04194aa28be6c95aed487dfba9ee Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 29 Aug 2015 23:32:06 +0200 Subject: [PATCH] No longer consume purchases. Also strike through bought items. --- app/src/main/assets/changelog.html | 8 ++++- .../ui/activities/MainActivity.java | 35 ++++++++++++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/app/src/main/assets/changelog.html b/app/src/main/assets/changelog.html index 118a28bd..1ccd8613 100644 --- a/app/src/main/assets/changelog.html +++ b/app/src/main/assets/changelog.html @@ -31,12 +31,18 @@
  • FIX: Album image loading delay (white album covers which took ages to load).
  • FIX: Song detail dialog padding.
  • FIX: Sleep timer dialog retains its current time on rotate.
  • +
  • IMPROVEMENT: No longer "consume" purchases. This means that your donations are saved + from now on. I made this, so that just in case I make a paid version onetime in future, I + know who has already donated before so I can unlock the paid version for them. +
  • Version 0.9.44 beta4

      -
    1. NEW: Support for light colors. The appbar will now automatically change its text and icon color to be visible on light theme colors.
    2. +
    3. NEW: Support for light colors. The appbar will now automatically change its text and + icon color to be visible on light theme colors. +
    4. FIX: Play/pause button offset too far to the right in landscape mode.
    diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 7ac793f8..9cd44e0b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -2,12 +2,12 @@ package com.kabouzeid.gramophone.ui.activities; import android.annotation.SuppressLint; import android.content.ComponentName; -import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.res.ColorStateList; import android.graphics.Color; +import android.graphics.Paint; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -30,6 +30,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; +import android.view.MotionEvent; import android.view.SubMenu; import android.view.View; import android.view.ViewGroup; @@ -603,8 +604,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity @LayoutRes private static int LAYOUT_RES_ID = R.layout.item_donation_option; - public SkuDetailsAdapter(@NonNull Context context, @NonNull List objects) { - super(context, LAYOUT_RES_ID, objects); + public SkuDetailsAdapter(@NonNull MainActivity mainActivity, @NonNull List objects) { + super(mainActivity, LAYOUT_RES_ID, objects); } @Override @@ -620,9 +621,33 @@ public class MainActivity extends AbsSlidingMusicPanelActivity viewHolder.text.setText(skuDetails.description); viewHolder.price.setText(skuDetails.priceText); + final boolean purchased = ((MainActivity) getContext()).billingProcessor.isPurchased(skuDetails.productId); + + int titleTextColor = purchased ? ColorUtil.resolveColor(getContext(), android.R.attr.textColorHint) : ColorUtil.resolveColor(getContext(), android.R.attr.textColorPrimary); + int contentTextColor = purchased ? titleTextColor : ColorUtil.resolveColor(getContext(), android.R.attr.textColorSecondary); + + viewHolder.title.setTextColor(titleTextColor); + viewHolder.text.setTextColor(contentTextColor); + viewHolder.price.setTextColor(titleTextColor); + + strikeThrough(viewHolder.title, purchased); + strikeThrough(viewHolder.text, purchased); + strikeThrough(viewHolder.price, purchased); + + convertView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return purchased; + } + }); + return convertView; } + private static void strikeThrough(TextView textView, boolean strikeThrough) { + textView.setPaintFlags(strikeThrough ? textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG : textView.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); + } + static class ViewHolder { @Bind(R.id.title) TextView title; @@ -638,6 +663,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity } private void showDonationDialog() { + billingProcessor.loadOwnedPurchasesFromGoogle(); + final String[] ids = getResources().getStringArray(R.array.donation_ids); List skuDetailsList = billingProcessor.getPurchaseListingDetails(new ArrayList<>(Arrays.asList(ids))); if (skuDetailsList == null) return; @@ -647,6 +674,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity .adapter(new SkuDetailsAdapter(this, skuDetailsList), new MaterialDialog.ListCallback() { @Override public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) { + materialDialog.dismiss(); donate(i); } }).show(); @@ -659,7 +687,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity @Override public void onProductPurchased(String productId, TransactionDetails details) { - billingProcessor.consumePurchase(productId); Toast.makeText(this, R.string.thank_you, Toast.LENGTH_SHORT).show(); }