No longer consume purchases. Also strike through bought items.

This commit is contained in:
Karim Abou Zeid 2015-08-29 23:32:06 +02:00
commit c3ae8e9081
2 changed files with 38 additions and 5 deletions

View file

@ -31,12 +31,18 @@
<li><b>FIX:</b> Album image loading delay (white album covers which took ages to load).</li> <li><b>FIX:</b> Album image loading delay (white album covers which took ages to load).</li>
<li><b>FIX:</b> Song detail dialog padding.</li> <li><b>FIX:</b> Song detail dialog padding.</li>
<li><b>FIX:</b> Sleep timer dialog retains its current time on rotate.</li> <li><b>FIX:</b> Sleep timer dialog retains its current time on rotate.</li>
<li><b>IMPROVEMENT:</b> 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.
</li>
</ol> </ol>
<h3>Version 0.9.44 beta4</h3> <h3>Version 0.9.44 beta4</h3>
<ol> <ol>
<li><b>NEW:</b> Support for light colors. The appbar will now automatically change its text and icon color to be visible on light theme colors.</li> <li><b>NEW:</b> Support for light colors. The appbar will now automatically change its text and
icon color to be visible on light theme colors.
</li>
<li><b>FIX:</b> Play/pause button offset too far to the right in landscape mode.</li> <li><b>FIX:</b> Play/pause button offset too far to the right in landscape mode.</li>
</ol> </ol>

View file

@ -2,12 +2,12 @@ package com.kabouzeid.gramophone.ui.activities;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Paint;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
@ -30,6 +30,7 @@ import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.SubMenu; import android.view.SubMenu;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -603,8 +604,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
@LayoutRes @LayoutRes
private static int LAYOUT_RES_ID = R.layout.item_donation_option; private static int LAYOUT_RES_ID = R.layout.item_donation_option;
public SkuDetailsAdapter(@NonNull Context context, @NonNull List<SkuDetails> objects) { public SkuDetailsAdapter(@NonNull MainActivity mainActivity, @NonNull List<SkuDetails> objects) {
super(context, LAYOUT_RES_ID, objects); super(mainActivity, LAYOUT_RES_ID, objects);
} }
@Override @Override
@ -620,9 +621,33 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
viewHolder.text.setText(skuDetails.description); viewHolder.text.setText(skuDetails.description);
viewHolder.price.setText(skuDetails.priceText); 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; 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 { static class ViewHolder {
@Bind(R.id.title) @Bind(R.id.title)
TextView title; TextView title;
@ -638,6 +663,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
} }
private void showDonationDialog() { private void showDonationDialog() {
billingProcessor.loadOwnedPurchasesFromGoogle();
final String[] ids = getResources().getStringArray(R.array.donation_ids); final String[] ids = getResources().getStringArray(R.array.donation_ids);
List<SkuDetails> skuDetailsList = billingProcessor.getPurchaseListingDetails(new ArrayList<>(Arrays.asList(ids))); List<SkuDetails> skuDetailsList = billingProcessor.getPurchaseListingDetails(new ArrayList<>(Arrays.asList(ids)));
if (skuDetailsList == null) return; if (skuDetailsList == null) return;
@ -647,6 +674,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
.adapter(new SkuDetailsAdapter(this, skuDetailsList), new MaterialDialog.ListCallback() { .adapter(new SkuDetailsAdapter(this, skuDetailsList), new MaterialDialog.ListCallback() {
@Override @Override
public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) { public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) {
materialDialog.dismiss();
donate(i); donate(i);
} }
}).show(); }).show();
@ -659,7 +687,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
@Override @Override
public void onProductPurchased(String productId, TransactionDetails details) { public void onProductPurchased(String productId, TransactionDetails details) {
billingProcessor.consumePurchase(productId);
Toast.makeText(this, R.string.thank_you, Toast.LENGTH_SHORT).show(); Toast.makeText(this, R.string.thank_you, Toast.LENGTH_SHORT).show();
} }