diff --git a/app/src/main/java/org/tasks/sync/SynchronizationPreferences.java b/app/src/main/java/org/tasks/sync/SynchronizationPreferences.java index efa1e676e..a879c9f2c 100644 --- a/app/src/main/java/org/tasks/sync/SynchronizationPreferences.java +++ b/app/src/main/java/org/tasks/sync/SynchronizationPreferences.java @@ -20,6 +20,8 @@ import javax.inject.Inject; import org.tasks.R; import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracking; +import org.tasks.billing.Inventory; +import org.tasks.billing.PurchaseActivity; import org.tasks.caldav.CaldavAccountSettingsActivity; import org.tasks.data.CaldavAccount; import org.tasks.data.CaldavDao; @@ -40,6 +42,7 @@ public class SynchronizationPreferences extends InjectingPreferenceActivity { private static final int REQUEST_LOGIN = 0; private static final int REQUEST_CALDAV_SETTINGS = 101; + private static final int REQUEST_CALDAV_SUBSCRIBE = 102; @Inject GtasksPreferenceService gtasksPreferenceService; @Inject ActivityPermissionRequestor permissionRequestor; @@ -54,6 +57,7 @@ public class SynchronizationPreferences extends InjectingPreferenceActivity { @Inject Preferences preferences; @Inject JobManager jobManager; @Inject CaldavDao caldavDao; + @Inject Inventory inventory; @Override public void onCreate(Bundle savedInstanceState) { @@ -75,12 +79,8 @@ public class SynchronizationPreferences extends InjectingPreferenceActivity { caldavPreferences.addPreference(accountPreferences); } Preference addCaldavAccount = new Preference(this); + addCaldavAccount.setKey(getString(R.string.add_account)); addCaldavAccount.setTitle(R.string.add_account); - addCaldavAccount.setOnPreferenceClickListener(preference -> { - startActivityForResult(new Intent(this, CaldavAccountSettingsActivity.class), - REQUEST_CALDAV_SETTINGS); - return false; - }); caldavPreferences.addPreference(addCaldavAccount); final CheckBoxPreference gtaskPreference = @@ -149,11 +149,30 @@ public class SynchronizationPreferences extends InjectingPreferenceActivity { protected void onResume() { super.onResume(); + Preference addCaldavAccount = findPreference(R.string.add_account); + if (inventory.hasPro()) { + addCaldavAccount.setSummary(null); + addCaldavAccount.setOnPreferenceClickListener(preference -> { + addCaldavAccount(); + return false; + }); + } else { + addCaldavAccount.setSummary(R.string.requires_pro_subscription); + addCaldavAccount.setOnPreferenceClickListener(preference -> { + startActivityForResult(new Intent(this, PurchaseActivity.class), REQUEST_CALDAV_SUBSCRIBE); + return false; + }); + } + if (!permissionChecker.canAccessAccounts()) { ((CheckBoxPreference) findPreference(getString(R.string.sync_gtasks))).setChecked(false); } } + private void addCaldavAccount() { + startActivityForResult(new Intent(this, CaldavAccountSettingsActivity.class), REQUEST_CALDAV_SETTINGS); + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_LOGIN) { @@ -170,6 +189,10 @@ public class SynchronizationPreferences extends InjectingPreferenceActivity { finish(); startActivity(intent); } + } else if (requestCode == REQUEST_CALDAV_SUBSCRIBE) { + if (inventory.hasPro()) { + addCaldavAccount(); + } } else { super.onActivityResult(requestCode, resultCode, data); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5660df18d..3abad1174 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -901,5 +901,6 @@ File %1$s contained %2$s.\n\n Tasker plugins Dashclock extension Create new collection + Requires pro subscription