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();
}