diff --git a/src/amazon/java/org/tasks/billing/PurchaseHelper.java b/src/amazon/java/org/tasks/billing/PurchaseHelper.java new file mode 100644 index 000000000..668b16d50 --- /dev/null +++ b/src/amazon/java/org/tasks/billing/PurchaseHelper.java @@ -0,0 +1,27 @@ +package org.tasks.billing; + +import android.app.Activity; +import android.content.Intent; + +import org.tasks.dialogs.DialogBuilder; +import org.tasks.widget.WidgetConfigActivity; + +import javax.inject.Inject; + +public class PurchaseHelper { + + @Inject + public PurchaseHelper() { + } + + public boolean purchase(DialogBuilder dialogBuilder, final Activity activity, + final String sku, final String pref, + final int requestCode, final PurchaseHelperCallback callback) { + callback.purchaseCompleted(false, sku); + return false; + } + + public void handleActivityResult(WidgetConfigActivity widgetConfigActivity, int requestCode, int resultCode, Intent data) { + + } +} diff --git a/src/amazon/java/org/tasks/widget/WidgetConfigActivity.java b/src/amazon/java/org/tasks/widget/WidgetConfigActivity.java deleted file mode 100644 index 14dd5dd6b..000000000 --- a/src/amazon/java/org/tasks/widget/WidgetConfigActivity.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.tasks.widget; - -import org.tasks.injection.ActivityComponent; - -public class WidgetConfigActivity extends BaseWidgetConfigActivity { - @Override - public void inject(ActivityComponent component) { - component.inject(this); - } - - @Override - public void initiateThemePurchase() { - - } -} diff --git a/src/amazon/res/values/keys.xml b/src/amazon/res/values/keys.xml new file mode 100644 index 000000000..d4b547ee5 --- /dev/null +++ b/src/amazon/res/values/keys.xml @@ -0,0 +1,4 @@ + + + themes + \ No newline at end of file diff --git a/src/generic/java/org/tasks/billing/PurchaseHelper.java b/src/generic/java/org/tasks/billing/PurchaseHelper.java new file mode 100644 index 000000000..583ceb1f5 --- /dev/null +++ b/src/generic/java/org/tasks/billing/PurchaseHelper.java @@ -0,0 +1,31 @@ +package org.tasks.billing; + +import android.app.Activity; +import android.content.Intent; + +import org.tasks.dialogs.DialogBuilder; +import org.tasks.preferences.Preferences; +import org.tasks.widget.WidgetConfigActivity; + +import javax.inject.Inject; + +public class PurchaseHelper { + private Preferences preferences; + + @Inject + public PurchaseHelper(Preferences preferences) { + this.preferences = preferences; + } + + public boolean purchase(DialogBuilder dialogBuilder, final Activity activity, + final String sku, final String pref, + final int requestCode, final PurchaseHelperCallback callback) { + preferences.setBoolean(pref, true); + callback.purchaseCompleted(true, sku); + return true; + } + + public void handleActivityResult(WidgetConfigActivity widgetConfigActivity, int requestCode, int resultCode, Intent data) { + + } +} diff --git a/src/generic/java/org/tasks/widget/WidgetConfigActivity.java b/src/generic/java/org/tasks/widget/WidgetConfigActivity.java deleted file mode 100644 index cd3fa332e..000000000 --- a/src/generic/java/org/tasks/widget/WidgetConfigActivity.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.tasks.widget; - -import org.tasks.R; -import org.tasks.injection.ActivityComponent; -import org.tasks.preferences.Preferences; - -import javax.inject.Inject; - -public class WidgetConfigActivity extends BaseWidgetConfigActivity { - - @Inject Preferences preferences; - - @Override - public void inject(ActivityComponent component) { - component.inject(this); - } - - @Override - public void initiateThemePurchase() { - preferences.setBoolean(R.string.p_purchased_themes, true); - showThemeSelection(); - } -} diff --git a/src/generic/res/values/keys.xml b/src/generic/res/values/keys.xml new file mode 100644 index 000000000..d4b547ee5 --- /dev/null +++ b/src/generic/res/values/keys.xml @@ -0,0 +1,4 @@ + + + themes + \ No newline at end of file diff --git a/src/googleplay/java/org/tasks/widget/WidgetConfigActivity.java b/src/googleplay/java/org/tasks/widget/WidgetConfigActivity.java deleted file mode 100644 index 081d01740..000000000 --- a/src/googleplay/java/org/tasks/widget/WidgetConfigActivity.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.tasks.widget; - -import android.content.Intent; - -import org.tasks.R; -import org.tasks.billing.PurchaseHelper; -import org.tasks.billing.PurchaseHelperCallback; -import org.tasks.injection.ActivityComponent; - -import javax.inject.Inject; - -import timber.log.Timber; - -public class WidgetConfigActivity extends BaseWidgetConfigActivity implements PurchaseHelperCallback { - - private static final int REQUEST_PURCHASE = 10109; - - @Inject PurchaseHelper purchaseHelper; - - @Override - public void initiateThemePurchase() { - purchaseHelper.purchase(dialogBuilder, this, getString(R.string.sku_themes), getString(R.string.p_purchased_themes), REQUEST_PURCHASE, this); - } - - @Override - public void purchaseCompleted(boolean success, final String sku) { - runOnUiThread(new Runnable() { - @Override - public void run() { - if (getString(R.string.sku_themes).equals(sku)) { - showThemeSelection(); - } else { - Timber.d("Unhandled sku: %s", sku); - } - } - }); - } - - @Override - public void inject(ActivityComponent component) { - component.inject(this); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == REQUEST_PURCHASE) { - purchaseHelper.handleActivityResult(this, requestCode, resultCode, data); - } else { - super.onActivityResult(requestCode, resultCode, data); - } - } -} diff --git a/src/googleplay/java/org/tasks/billing/PurchaseHelperCallback.java b/src/main/java/org/tasks/billing/PurchaseHelperCallback.java similarity index 100% rename from src/googleplay/java/org/tasks/billing/PurchaseHelperCallback.java rename to src/main/java/org/tasks/billing/PurchaseHelperCallback.java diff --git a/src/main/java/org/tasks/preferences/Preferences.java b/src/main/java/org/tasks/preferences/Preferences.java index 70ccf1432..eb7e7ad74 100644 --- a/src/main/java/org/tasks/preferences/Preferences.java +++ b/src/main/java/org/tasks/preferences/Preferences.java @@ -12,7 +12,6 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskAttachment; -import org.tasks.widget.WidgetConfigActivity; import org.tasks.R; import org.tasks.injection.ForApplication; diff --git a/src/main/java/org/tasks/widget/BaseWidgetConfigActivity.java b/src/main/java/org/tasks/widget/WidgetConfigActivity.java similarity index 67% rename from src/main/java/org/tasks/widget/BaseWidgetConfigActivity.java rename to src/main/java/org/tasks/widget/WidgetConfigActivity.java index 76ba1b8ed..ade580eff 100644 --- a/src/main/java/org/tasks/widget/BaseWidgetConfigActivity.java +++ b/src/main/java/org/tasks/widget/WidgetConfigActivity.java @@ -8,17 +8,24 @@ import android.os.Bundle; import org.tasks.R; import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracking; +import org.tasks.billing.PurchaseHelper; +import org.tasks.billing.PurchaseHelperCallback; import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.ThemePickerDialog; +import org.tasks.injection.ActivityComponent; import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.preferences.Theme; import javax.inject.Inject; -public abstract class BaseWidgetConfigActivity extends InjectingAppCompatActivity implements WidgetConfigDialog.WidgetConfigCallback, ThemePickerDialog.ThemePickerCallback { +import timber.log.Timber; + +public class WidgetConfigActivity extends InjectingAppCompatActivity implements WidgetConfigDialog.WidgetConfigCallback, ThemePickerDialog.ThemePickerCallback, PurchaseHelperCallback { private static final String FRAG_TAG_WIDGET_CONFIG = "frag_tag_widget_config"; + private static final int REQUEST_PURCHASE = 10109; + public static final int DEFAULT_OPACITY = 255; public static final String PREF_WIDGET_ID = "widget-id-"; @@ -31,6 +38,7 @@ public abstract class BaseWidgetConfigActivity extends InjectingAppCompatActivit @Inject Tracker tracker; @Inject DialogBuilder dialogBuilder; + @Inject PurchaseHelper purchaseHelper; private int appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; private WidgetConfigDialog widgetConfigDialog; @@ -83,6 +91,39 @@ public abstract class BaseWidgetConfigActivity extends InjectingAppCompatActivit } } + @Override + public void initiateThemePurchase() { + purchaseHelper.purchase(dialogBuilder, this, getString(R.string.sku_themes), getString(R.string.p_purchased_themes), REQUEST_PURCHASE, this); + } + + @Override + public void purchaseCompleted(boolean success, final String sku) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if (getString(R.string.sku_themes).equals(sku)) { + showThemeSelection(); + } else { + Timber.d("Unhandled sku: %s", sku); + } + } + }); + } + + @Override + public void inject(ActivityComponent component) { + component.inject(this); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == REQUEST_PURCHASE) { + purchaseHelper.handleActivityResult(this, requestCode, resultCode, data); + } else { + super.onActivityResult(requestCode, resultCode, data); + } + } + protected void showThemeSelection() { widgetConfigDialog.showThemeSelection(); }