From 780328a75dd83e9aed6cafbdee15ee058cb01144 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 14 Jan 2021 10:09:52 -0600 Subject: [PATCH] Add tasks.org to AddAccountDialog --- .../java/org/tasks/billing/PurchaseDialog.kt | 2 +- .../preferences/fragments/Synchronization.kt | 11 ++++- .../java/org/tasks/sync/AddAccountDialog.kt | 45 ++++++++++++++----- app/src/main/res/drawable/ic_round_icon.xml | 26 +++++++++++ app/src/main/res/values/arrays.xml | 3 ++ app/src/main/res/values/keys.xml | 1 - app/src/main/res/values/strings.xml | 1 + 7 files changed, 74 insertions(+), 15 deletions(-) create mode 100644 app/src/main/res/drawable/ic_round_icon.xml diff --git a/app/src/main/java/org/tasks/billing/PurchaseDialog.kt b/app/src/main/java/org/tasks/billing/PurchaseDialog.kt index 6567efb57..2176cb52a 100644 --- a/app/src/main/java/org/tasks/billing/PurchaseDialog.kt +++ b/app/src/main/java/org/tasks/billing/PurchaseDialog.kt @@ -135,7 +135,7 @@ _${getString(R.string.upgrade_tasks_no_account)}_ """ --- #### ${getString(R.string.upgrade_tasks_account)} -* ${getString(R.string.upgrade_sync_tasks)} +* ${getString(R.string.tasks_org_description)} * [${getString(R.string.upgrade_third_party_apps)}](${getString(R.string.url_app_passwords)}) * [${getString(R.string.upgrade_coming_soon)}](${getString(R.string.help_url_sync)}) """ diff --git a/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt b/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt index fe95b143b..ffe50ca4d 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt @@ -2,6 +2,7 @@ package org.tasks.preferences.fragments import android.content.Intent import android.os.Bundle +import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.preference.Preference import androidx.preference.PreferenceCategory @@ -29,6 +30,7 @@ import org.tasks.injection.InjectingPreferenceFragment import org.tasks.jobs.WorkManager import org.tasks.opentasks.OpenTaskAccountSettingsActivity import org.tasks.preferences.Preferences +import org.tasks.preferences.PreferencesViewModel import org.tasks.sync.AddAccountDialog.Companion.newAccountDialog import org.tasks.sync.SyncAdapters import javax.inject.Inject @@ -43,6 +45,8 @@ class Synchronization : InjectingPreferenceFragment() { @Inject lateinit var taskDeleter: TaskDeleter @Inject lateinit var syncAdapters: SyncAdapters + private val viewModel: PreferencesViewModel by activityViewModels() + override fun getPreferenceXml() = R.xml.preferences_synchronization override suspend fun setupPreferences(savedInstanceState: Bundle?) { @@ -63,8 +67,11 @@ class Synchronization : InjectingPreferenceFragment() { findPreference(R.string.add_account) .setOnPreferenceClickListener { - newAccountDialog(this@Synchronization, REQUEST_ADD_ACCOUNT) - .show(parentFragmentManager, FRAG_TAG_ADD_ACCOUNT) + lifecycleScope.launch { + val hasTasksAccount = viewModel.tasksAccount() != null + newAccountDialog(this@Synchronization, REQUEST_ADD_ACCOUNT, hasTasksAccount) + .show(parentFragmentManager, FRAG_TAG_ADD_ACCOUNT) + } false } } diff --git a/app/src/main/java/org/tasks/sync/AddAccountDialog.kt b/app/src/main/java/org/tasks/sync/AddAccountDialog.kt index f47c3e8b4..55d1ece7d 100644 --- a/app/src/main/java/org/tasks/sync/AddAccountDialog.kt +++ b/app/src/main/java/org/tasks/sync/AddAccountDialog.kt @@ -15,6 +15,7 @@ import androidx.fragment.app.Fragment import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity import dagger.hilt.android.AndroidEntryPoint import org.tasks.R +import org.tasks.auth.SignInActivity import org.tasks.caldav.CaldavAccountSettingsActivity import org.tasks.dialogs.DialogBuilder import org.tasks.etebase.EtebaseAccountSettingsActivity @@ -22,6 +23,7 @@ import org.tasks.extensions.getMutableIntList import org.tasks.extensions.getMutableStringList import org.tasks.preferences.fragments.Synchronization.Companion.REQUEST_CALDAV_SETTINGS import org.tasks.preferences.fragments.Synchronization.Companion.REQUEST_GOOGLE_TASKS +import org.tasks.preferences.fragments.Synchronization.Companion.REQUEST_TASKS_ORG import org.tasks.themes.DrawableUtil import javax.inject.Inject @@ -30,10 +32,17 @@ class AddAccountDialog : DialogFragment() { @Inject lateinit var dialogBuilder: DialogBuilder + private val hasTasksAccount: Boolean + get() = arguments?.getBoolean(EXTRA_HAS_TASKS_ACCOUNT) ?: false + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val services = resources.getMutableStringList(R.array.synchronization_services) val descriptions = resources.getMutableStringList(R.array.synchronization_services_description) val icons = resources.getMutableIntList(R.array.synchronization_services_icons) + if (hasTasksAccount) { + services.removeAt(0) + descriptions.removeAt(0) + icons.removeAt(0) } val adapter: ArrayAdapter = object : ArrayAdapter( requireActivity(), R.layout.simple_list_item_2_themed, R.id.text1, services) { @@ -42,8 +51,9 @@ class AddAccountDialog : DialogFragment() { view.findViewById(R.id.text1).text = services[position] view.findViewById(R.id.text2).text = descriptions[position] val icon = view.findViewById(R.id.image_view) - icon.setImageDrawable(DrawableUtil.getWrapped(context, icons[position])) - if (position == 2) { + val iconResId = icons[position] + icon.setImageDrawable(DrawableUtil.getWrapped(context, iconResId)) + if (iconResId == R.drawable.ic_webdav_logo) { icon.drawable.setTint(context.getColor(R.color.icon_tint)) } return view @@ -53,19 +63,22 @@ class AddAccountDialog : DialogFragment() { .newDialog() .setTitle(R.string.choose_synchronization_service) .setSingleChoiceItems(adapter, -1) { dialog, which -> - when (which) { + when (if (hasTasksAccount) which + 1 else which) { 0 -> activity?.startActivityForResult( + Intent(activity, SignInActivity::class.java), + REQUEST_TASKS_ORG) + 1 -> activity?.startActivityForResult( Intent(activity, GtasksLoginActivity::class.java), REQUEST_GOOGLE_TASKS) - 1 -> activity?.startActivity( + 2 -> activity?.startActivity( Intent(ACTION_VIEW, Uri.parse(getString(R.string.url_davx5)))) - 2 -> activity?.startActivityForResult( + 3 -> activity?.startActivityForResult( Intent(activity, CaldavAccountSettingsActivity::class.java), REQUEST_CALDAV_SETTINGS) - 3 -> activity?.startActivityForResult( + 4 -> activity?.startActivityForResult( Intent(activity, EtebaseAccountSettingsActivity::class.java), REQUEST_CALDAV_SETTINGS) - 4 -> activity?.startActivity( + 5 -> activity?.startActivity( Intent(ACTION_VIEW, Uri.parse(getString(R.string.url_decsync)))) } dialog.dismiss() @@ -83,9 +96,19 @@ class AddAccountDialog : DialogFragment() { } companion object { - fun newAccountDialog(targetFragment: Fragment, rc: Int): AddAccountDialog = - AddAccountDialog().apply { - setTargetFragment(targetFragment, rc) - } + private const val EXTRA_HAS_TASKS_ACCOUNT = "extra_has_tasks_account" + + fun newAccountDialog( + targetFragment: Fragment, + rc: Int, + hasTasksAccount: Boolean + ): AddAccountDialog { + val dialog = AddAccountDialog() + dialog.arguments = Bundle().apply { + putBoolean(EXTRA_HAS_TASKS_ACCOUNT, hasTasksAccount) + } + dialog.setTargetFragment(targetFragment, rc) + return dialog + } } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_round_icon.xml b/app/src/main/res/drawable/ic_round_icon.xml new file mode 100644 index 000000000..21e9a9807 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_icon.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index c29730f4b..ed1243597 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -194,6 +194,7 @@ + @string/tasks_org @string/gtasks_GPr_header @string/davx5 @string/caldav @@ -202,6 +203,7 @@ + @string/tasks_org_description @string/google_tasks_selection_description @string/davx5_selection_description @string/caldav_selection_description @@ -210,6 +212,7 @@ + @drawable/ic_round_icon @drawable/ic_google @drawable/ic_davx5_icon_green_bg @drawable/ic_webdav_logo diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index ebaca9f86..907e0a0e4 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -33,7 +33,6 @@ Tasks.org account Tasks.org account not included with \'Name your price\' subscriptions - Sync your tasks and calendars with Tasks.org Sync with third-party apps and services Compatible with Outlook, Thunderbird, Apple Reminders, and more Many new features coming soon! diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0b6e1b303..f2691f13a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -549,6 +549,7 @@ File %1$s contained %2$s.\n\n Enter tag name Create \"%s\" Select a platform + Synchronize your tasks with Tasks.org Basic service that synchronizes with your Google account Synchronization based on open internet standards Open source, end-to-end encrypted synchronization