No longer consume purchases. Also strike through bought items.
This commit is contained in:
parent
94ebb0b0e1
commit
c3ae8e9081
2 changed files with 38 additions and 5 deletions
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue