From ee5bcb21e6ef41bc9ae8eed35424967fb28ad7d8 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 16 Nov 2020 17:26:35 -0600 Subject: [PATCH] Add TasksAccountSettingsActivity --- app/src/main/AndroidManifest.xml | 4 ++ .../auth/TasksAccountSettingsActivity.kt | 66 +++++++++++++++++++ .../OpenTaskAccountSettingsActivity.kt | 2 +- .../preferences/fragments/Synchronization.kt | 5 +- 4 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/org/tasks/auth/TasksAccountSettingsActivity.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1994bd33a..30234d52b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -366,6 +366,10 @@ android:name=".opentasks.OpenTaskAccountSettingsActivity" android:theme="@style/Tasks" /> + + diff --git a/app/src/main/java/org/tasks/auth/TasksAccountSettingsActivity.kt b/app/src/main/java/org/tasks/auth/TasksAccountSettingsActivity.kt new file mode 100644 index 000000000..569dc18f7 --- /dev/null +++ b/app/src/main/java/org/tasks/auth/TasksAccountSettingsActivity.kt @@ -0,0 +1,66 @@ +package org.tasks.auth + +import android.app.Activity +import android.os.Bundle +import android.view.View +import androidx.appcompat.widget.Toolbar +import androidx.lifecycle.lifecycleScope +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch +import org.tasks.R +import org.tasks.caldav.BaseCaldavAccountSettingsActivity + +@AndroidEntryPoint +class TasksAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Toolbar.OnMenuItemClickListener { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + binding.userLayout.visibility = View.GONE + binding.passwordLayout.visibility = View.GONE + binding.urlLayout.visibility = View.GONE + binding.repeat.visibility = View.GONE + } + + override val description: Int + get() = 0 + + override val newPassword: String? + get() = "" + + private suspend fun updateAccount(principal: String?) { + hideProgressIndicator() + caldavAccount!!.name = newName + caldavAccount!!.url = principal + caldavAccount!!.username = newUsername + caldavAccount!!.error = "" + if (passwordChanged()) { + caldavAccount!!.password = encryption.encrypt(newPassword!!) + } + caldavAccount!!.isSuppressRepeatingTasks = binding.repeat.isChecked + caldavDao.update(caldavAccount!!) + setResult(Activity.RESULT_OK) + finish() + } + + override fun hasChanges() = + newName != caldavAccount!!.name + || binding.repeat.isChecked != caldavAccount!!.isSuppressRepeatingTasks + + override fun save() = lifecycleScope.launch { + if (newName.isBlank()) { + binding.nameLayout.error = getString(R.string.name_cannot_be_empty) + return@launch + } + updateAccount() + } + + override suspend fun addAccount(url: String, username: String, password: String) {} + + override suspend fun updateAccount(url: String, username: String, password: String) {} + + override suspend fun updateAccount() = updateAccount(caldavAccount!!.url) + + override val helpUrl: String + get() = getString(R.string.help_url_sync) +} \ No newline at end of file diff --git a/app/src/main/java/org/tasks/opentasks/OpenTaskAccountSettingsActivity.kt b/app/src/main/java/org/tasks/opentasks/OpenTaskAccountSettingsActivity.kt index 2d3249f7f..369ad8ba5 100644 --- a/app/src/main/java/org/tasks/opentasks/OpenTaskAccountSettingsActivity.kt +++ b/app/src/main/java/org/tasks/opentasks/OpenTaskAccountSettingsActivity.kt @@ -20,7 +20,7 @@ class OpenTaskAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Too binding.passwordLayout.visibility = View.GONE binding.urlLayout.visibility = View.GONE - if (caldavAccount!!.isOpenTaskEteSync || caldavAccount!!.isTasksOrg) { + if (caldavAccount!!.isOpenTaskEteSync) { binding.repeat.visibility = View.GONE } } 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 6c045b918..bc152a623 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt @@ -27,6 +27,7 @@ import org.tasks.etesync.EteSyncAccountSettingsActivity import org.tasks.injection.InjectingPreferenceFragment import org.tasks.jobs.WorkManager import org.tasks.opentasks.OpenTaskAccountSettingsActivity +import org.tasks.auth.TasksAccountSettingsActivity import org.tasks.preferences.Preferences import org.tasks.sync.AddAccountDialog.Companion.newAccountDialog import org.tasks.sync.SyncAdapters @@ -163,10 +164,10 @@ class Synchronization : InjectingPreferenceFragment() { } preference.onPreferenceClickListener = Preference.OnPreferenceClickListener { val intent = Intent(context, when { + account.isTasksOrg -> TasksAccountSettingsActivity::class.java account.isCaldavAccount -> CaldavAccountSettingsActivity::class.java account.isEteSyncAccount -> EteSyncAccountSettingsActivity::class.java - account.isOpenTasks || account.isTasksOrg -> - OpenTaskAccountSettingsActivity::class.java + account.isOpenTasks -> OpenTaskAccountSettingsActivity::class.java else -> throw IllegalArgumentException("Unexpected account type: $account") }) intent.putExtra(BaseCaldavAccountSettingsActivity.EXTRA_CALDAV_DATA, account)