Replaced BuyDialog with PurchaseActivity
This commit is contained in:
parent
344404c03f
commit
035792b3d0
16 changed files with 349 additions and 215 deletions
|
|
@ -30,7 +30,6 @@ import com.kabouzeid.appthemehelper.util.ATHUtil;
|
|||
import com.kabouzeid.appthemehelper.util.NavigationViewUtil;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.dialogs.BuyDialog;
|
||||
import com.kabouzeid.gramophone.dialogs.ChangelogDialog;
|
||||
import com.kabouzeid.gramophone.glide.SongGlideRequest;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
|
|
@ -57,6 +56,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
|
||||
public static final String TAG = MainActivity.class.getSimpleName();
|
||||
public static final int APP_INTRO_REQUEST = 100;
|
||||
public static final int PURCHASE_REQUEST = 101;
|
||||
|
||||
private static final int LIBRARY = 0;
|
||||
private static final int FOLDERS = 1;
|
||||
|
|
@ -112,7 +112,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
private void setMusicChooser(int key) {
|
||||
if (!App.isProVersion() && key == FOLDERS) {
|
||||
Toast.makeText(this, R.string.folder_view_is_a_pro_feature, Toast.LENGTH_LONG).show();
|
||||
BuyDialog.create().show(getSupportFragmentManager(), "BUY_DIALOG");
|
||||
startActivityForResult(new Intent(this, PurchaseActivity.class), PURCHASE_REQUEST);
|
||||
key = LIBRARY;
|
||||
}
|
||||
|
||||
|
|
@ -146,6 +146,12 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
if (!hasPermissions()) {
|
||||
requestPermissions();
|
||||
}
|
||||
} else if (requestCode == PURCHASE_REQUEST) {
|
||||
if (resultCode == RESULT_OK) {
|
||||
if (App.isProVersion()) {
|
||||
setUpPro();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -169,7 +175,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
NavigationViewUtil.setItemTextColors(navigationView, ThemeStore.textColorPrimary(this), accentColor);
|
||||
|
||||
if (App.isProVersion()) {
|
||||
navigationView.getMenu().removeGroup(R.id.navigation_drawer_menu_category_buy_pro);
|
||||
setUpPro();
|
||||
}
|
||||
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
|
||||
@Override
|
||||
|
|
@ -196,7 +202,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
BuyDialog.create().show(getSupportFragmentManager(), "BUY_DIALOG");
|
||||
startActivityForResult(new Intent(MainActivity.this, PurchaseActivity.class), PURCHASE_REQUEST);
|
||||
}
|
||||
}, 200);
|
||||
break;
|
||||
|
|
@ -222,6 +228,10 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
});
|
||||
}
|
||||
|
||||
private void setUpPro() {
|
||||
navigationView.getMenu().removeGroup(R.id.navigation_drawer_menu_category_buy_pro);
|
||||
}
|
||||
|
||||
private void setUpDrawerLayout() {
|
||||
setUpNavigationView();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,172 @@
|
|||
package com.kabouzeid.gramophone.ui.activities;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.anjlab.android.iab.v3.BillingProcessor;
|
||||
import com.anjlab.android.iab.v3.TransactionDetails;
|
||||
import com.kabouzeid.appthemehelper.color.MaterialColor;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class PurchaseActivity extends AbsBaseActivity implements BillingProcessor.IBillingHandler {
|
||||
|
||||
public static final String TAG = PurchaseActivity.class.getSimpleName();
|
||||
|
||||
private static final int ACTIVITY_COLOR = MaterialColor.Green._500.getAsColor();
|
||||
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar toolbar;
|
||||
@BindView(R.id.restore_button)
|
||||
Button restoreButton;
|
||||
@BindView(R.id.purchase_button)
|
||||
Button purchaseButton;
|
||||
|
||||
private BillingProcessor billingProcessor;
|
||||
private AsyncTask restorePurchaseAsyncTask;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_purchase);
|
||||
setDrawUnderStatusbar(true);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
setStatusbarColor(ACTIVITY_COLOR);
|
||||
setNavigationbarColor(ACTIVITY_COLOR);
|
||||
setTaskDescriptionColor(ACTIVITY_COLOR);
|
||||
|
||||
setSupportActionBar(toolbar);
|
||||
//noinspection ConstantConditions
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setTitle(getString(R.string.purchase) + " Phonograph Pro");
|
||||
|
||||
restoreButton.setEnabled(false);
|
||||
purchaseButton.setEnabled(false);
|
||||
|
||||
restoreButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (restorePurchaseAsyncTask == null || restorePurchaseAsyncTask.getStatus() != AsyncTask.Status.RUNNING) {
|
||||
restorePurchase();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
purchaseButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
billingProcessor.purchase(PurchaseActivity.this, App.PRO_VERSION_PRODUCT_ID);
|
||||
}
|
||||
});
|
||||
|
||||
billingProcessor = new BillingProcessor(this, App.GOOGLE_PLAY_LICENSE_KEY, this);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void restorePurchase() {
|
||||
if (restorePurchaseAsyncTask != null) {
|
||||
restorePurchaseAsyncTask.cancel(false);
|
||||
}
|
||||
restorePurchaseAsyncTask = new RestorePurchaseAsyncTask(this).execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProductPurchased(@NonNull String productId, @Nullable TransactionDetails details) {
|
||||
Toast.makeText(this, R.string.thank_you, Toast.LENGTH_SHORT).show();
|
||||
setResult(RESULT_OK);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPurchaseHistoryRestored() {
|
||||
if (App.isProVersion()) {
|
||||
Toast.makeText(this, R.string.restored_previous_purchase_please_restart, Toast.LENGTH_LONG).show();
|
||||
setResult(RESULT_OK);
|
||||
} else {
|
||||
Toast.makeText(this, R.string.no_purchase_found, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBillingError(int errorCode, @Nullable Throwable error) {
|
||||
Log.e(TAG, "Billing error: code = " + errorCode, error);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBillingInitialized() {
|
||||
restoreButton.setEnabled(true);
|
||||
purchaseButton.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (!billingProcessor.handleActivityResult(requestCode, resultCode, data)) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
if (billingProcessor != null) {
|
||||
billingProcessor.release();
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
private static class RestorePurchaseAsyncTask extends AsyncTask<Void, Void, Boolean> {
|
||||
private final WeakReference<PurchaseActivity> buyActivityWeakReference;
|
||||
|
||||
public RestorePurchaseAsyncTask(PurchaseActivity purchaseActivity) {
|
||||
this.buyActivityWeakReference = new WeakReference<>(purchaseActivity);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
super.onPreExecute();
|
||||
PurchaseActivity purchaseActivity = buyActivityWeakReference.get();
|
||||
if (purchaseActivity != null) {
|
||||
Toast.makeText(purchaseActivity, R.string.restoring_purchase, Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
cancel(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(Void... params) {
|
||||
PurchaseActivity purchaseActivity = buyActivityWeakReference.get();
|
||||
if (purchaseActivity != null) {
|
||||
return purchaseActivity.billingProcessor.loadOwnedPurchasesFromGoogle();
|
||||
}
|
||||
cancel(false);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean b) {
|
||||
super.onPostExecute(b);
|
||||
PurchaseActivity purchaseActivity = buyActivityWeakReference.get();
|
||||
if (purchaseActivity == null || b == null) return;
|
||||
|
||||
if (b) {
|
||||
purchaseActivity.onPurchaseHistoryRestored();
|
||||
} else {
|
||||
Toast.makeText(purchaseActivity, R.string.could_not_restore_purchase, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -28,12 +28,9 @@ import com.kabouzeid.appthemehelper.util.ColorUtil;
|
|||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.appshortcuts.DynamicShortcutManager;
|
||||
import com.kabouzeid.gramophone.dialogs.BuyDialog;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.misc.NonProAllowedColors;
|
||||
import com.kabouzeid.gramophone.preferences.NowPlayingScreenPreference;
|
||||
import com.kabouzeid.gramophone.preferences.NowPlayingScreenPreferenceDialog;
|
||||
import com.kabouzeid.gramophone.service.MusicService;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
|
||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
|
|
@ -82,7 +79,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
if (Arrays.binarySearch(NonProAllowedColors.PRIMARY_COLORS, selectedColor) < 0) {
|
||||
// color wasn't found
|
||||
Toast.makeText(this, R.string.only_the_first_5_colors_available, Toast.LENGTH_LONG).show();
|
||||
BuyDialog.create().show(getSupportFragmentManager(), "BUY_DIALOG");
|
||||
startActivity(new Intent(this, PurchaseActivity.class));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -96,7 +93,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
if (Arrays.binarySearch(NonProAllowedColors.ACCENT_COLORS, selectedColor) < 0) {
|
||||
// color wasn't found
|
||||
Toast.makeText(this, R.string.only_the_first_5_colors_available, Toast.LENGTH_LONG).show();
|
||||
BuyDialog.create().show(getSupportFragmentManager(), "BUY_DIALOG");
|
||||
startActivity(new Intent(this, PurchaseActivity.class));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -202,7 +199,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
String themeName = (String) o;
|
||||
if (themeName.equals("black") && !App.isProVersion()) {
|
||||
Toast.makeText(getActivity(), R.string.black_theme_is_a_pro_feature, Toast.LENGTH_LONG).show();
|
||||
BuyDialog.create().show(getFragmentManager(), "BUY_DIALOG");
|
||||
startActivity(new Intent(getContext(), PurchaseActivity.class));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue