diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index 49fff089c..4a5acc115 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -129,6 +129,8 @@ + diff --git a/Habitica/res/drawable-hdpi/support_habitica.png b/Habitica/res/drawable-hdpi/support_habitica.png new file mode 100644 index 000000000..e9cf46e0b Binary files /dev/null and b/Habitica/res/drawable-hdpi/support_habitica.png differ diff --git a/Habitica/res/drawable-mdpi/support_habitica.png b/Habitica/res/drawable-mdpi/support_habitica.png new file mode 100644 index 000000000..77b12870f Binary files /dev/null and b/Habitica/res/drawable-mdpi/support_habitica.png differ diff --git a/Habitica/res/drawable-xhdpi/support_habitica.png b/Habitica/res/drawable-xhdpi/support_habitica.png new file mode 100644 index 000000000..4e2a1e242 Binary files /dev/null and b/Habitica/res/drawable-xhdpi/support_habitica.png differ diff --git a/Habitica/res/drawable-xxhdpi/support_habitica.png b/Habitica/res/drawable-xxhdpi/support_habitica.png new file mode 100644 index 000000000..fc77fd9c9 Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/support_habitica.png differ diff --git a/Habitica/res/layout/activity_gem_purchase.xml b/Habitica/res/layout/activity_gem_purchase.xml new file mode 100644 index 000000000..7776fe9a0 --- /dev/null +++ b/Habitica/res/layout/activity_gem_purchase.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 3231628bc..3671445e1 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -414,11 +414,13 @@ To start, which parts of your life do you want to improve? Habitica Dailies Habitica Add Task Google play services could not be found. + Purchase Buying gems supports the developers and helps keep Habitica running Gems allow you to buy fun extras for you account, including: Cool costumes for your avatar Awesome backgrounds Quests that reward you with pet eggs The ability to change your class before level 100 + Support Habitica diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseTypes.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseTypes.java index 64ce11347..b7befef4b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseTypes.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseTypes.java @@ -6,10 +6,10 @@ import java.util.List; public class PurchaseTypes { - public static String Purchase4Gems = "com.habitrpg.android.habitica.4gems"; - public static String Purchase21Gems = "com.habitrpg.android.habitica.21gems"; - public static String Purchase42Gems = "com.habitrpg.android.habitica.42gems"; - public static String Purchase84Gems = "com.habitrpg.android.habitica.84gems"; + public static String Purchase4Gems = "com.habitrpg.android.habitica.iap.4gems"; + public static String Purchase21Gems = "com.habitrpg.android.habitica.iap.21gems"; + public static String Purchase42Gems = "com.habitrpg.android.habitica.iap.42gems"; + public static String Purchase84Gems = "com.habitrpg.android.habitica.iap.84gems"; public static List allTypes = Arrays.asList(Purchase4Gems, Purchase21Gems, Purchase42Gems, Purchase84Gems); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.java new file mode 100644 index 000000000..7426d1b69 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.java @@ -0,0 +1,69 @@ +package com.habitrpg.android.habitica.ui.activities; + + +import com.habitrpg.android.habitica.HabiticaApplication; +import com.habitrpg.android.habitica.R; +import com.habitrpg.android.habitica.components.AppComponent; +import com.habitrpg.android.habitica.ui.fragments.GemsPurchaseFragment; + +import org.solovyev.android.checkout.ActivityCheckout; +import org.solovyev.android.checkout.Checkout; + +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.view.MenuItem; + +public class GemPurchaseActivity extends BaseActivity implements GemsPurchaseFragment.Listener { + + private ActivityCheckout checkout; + + @Override + protected int getLayoutResId() { + return R.layout.activity_gem_purchase; + } + + @Override + protected void injectActivity(AppComponent component) { + + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setupCheckout(); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + if (getSupportActionBar() != null) { + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayShowHomeEnabled(true); + getSupportActionBar().setTitle(R.string.gem_purchase_toolbartitle); + } + + GemsPurchaseFragment firstFragment = new GemsPurchaseFragment(); + getSupportFragmentManager().beginTransaction() + .add(R.id.fragment_container, firstFragment).commit(); + } + + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == android.R.id.home) { + finish(); + } + + return super.onOptionsItemSelected(item); + } + + private void setupCheckout() { + checkout = Checkout.forActivity(this, HabiticaApplication.getInstance(this).getCheckout()); + checkout.start(); + } + + @Override + public ActivityCheckout getActivityCheckout() { + return checkout; + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 33f574565..5c47ca3df 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -163,8 +163,7 @@ import static com.habitrpg.android.habitica.ui.helpers.UiUtils.SnackbarDisplayTy import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar; public class MainActivity extends BaseActivity implements Action1, HabitRPGUserCallback.OnUserReceived, - TaskScoringCallback.OnTaskScored, - GemsPurchaseFragment.Listener, TutorialView.OnTutorialReaction { + TaskScoringCallback.OnTaskScored, TutorialView.OnTutorialReaction { public static final int SELECT_CLASS_RESULT = 11; public static final int MIN_LEVEL_FOR_SKILLS = 11; @@ -274,7 +273,6 @@ public class MainActivity extends BaseActivity implements Action1, Ha .append(this.drawer); } - setupCheckout(); EventBus.getDefault().register(this); } @@ -324,15 +322,6 @@ public class MainActivity extends BaseActivity implements Action1, Ha sendBroadcast(intent); } - private void setupCheckout() { - checkout = Checkout.forActivity(this, HabiticaApplication.getInstance(this).getCheckout()); - checkout.start(); - } - - @Override - public ActivityCheckout getActivityCheckout() { - return checkout; - } private void saveLoginInformation() { HabiticaApplication.User = user; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/GemsPurchaseFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/GemsPurchaseFragment.java index 6a56c2cef..ea30bb9e7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/GemsPurchaseFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/GemsPurchaseFragment.java @@ -35,7 +35,7 @@ import butterknife.BindView; import butterknife.OnClick; import io.fabric.sdk.android.Fabric; -public class GemsPurchaseFragment extends BaseMainFragment { +public class GemsPurchaseFragment extends BaseFragment { @BindView(R.id.gems_4_view) GemPurchaseOptionsView gems4View; @@ -66,10 +66,7 @@ public class GemsPurchaseFragment extends BaseMainFragment { super.onCreateView(inflater, container, savedInstanceState); - gems4View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase4Gems)); - gems21View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase21Gems)); - gems42View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase42Gems)); - gems84View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase84Gems)); + priceMap = new HashMap<>(); return inflater.inflate(R.layout.fragment_gem_purchase, container, false); } @@ -83,6 +80,11 @@ public class GemsPurchaseFragment extends BaseMainFragment { public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + gems4View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase4Gems)); + gems21View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase21Gems)); + gems42View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase42Gems)); + gems84View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase84Gems)); + final ActivityCheckout checkout = listener.getActivityCheckout(); if (checkout != null) { @@ -169,7 +171,7 @@ public class GemsPurchaseFragment extends BaseMainFragment { public void onSuccess(@NonNull Purchases purchases) { for (Purchase purchase : purchases.list) { if (PurchaseTypes.allTypes.contains(purchase.sku)) { - billingRequests.consume(purchase.token, new RequestListener) { + billingRequests.consume(purchase.token, new RequestListener() { @Override public void onSuccess(@NonNull Object o) { EventBus.getDefault().post(new BoughtGemsEvent(GEMS_TO_ADD)); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java index 76bd1b30a..176a29295 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java @@ -2,6 +2,7 @@ package com.habitrpg.android.habitica.ui.menu; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.ui.activities.AboutActivity; +import com.habitrpg.android.habitica.ui.activities.GemPurchaseActivity; import com.habitrpg.android.habitica.ui.activities.MainActivity; import com.habitrpg.android.habitica.ui.activities.PrefsActivity; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; @@ -148,7 +149,7 @@ public class MainDrawerBuilder { break; } case SIDEBAR_PURCHASE: { - fragment = new GemsPurchaseFragment(); + newActivityClass = GemPurchaseActivity.class; break; } case SIDEBAR_NEWS: {