Convert AddAccountDialog to DialogFragment

pull/1061/head
Alex Baker 4 years ago
parent ca42c718b9
commit e5a5c9b264

@ -2,10 +2,8 @@ package org.tasks.preferences
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import androidx.lifecycle.lifecycleScope
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.tasks.R import org.tasks.R
import org.tasks.drive.DriveLoginActivity import org.tasks.drive.DriveLoginActivity
import org.tasks.jobs.WorkManager import org.tasks.jobs.WorkManager
@ -32,16 +30,12 @@ class MainPreferences : BasePreferences() {
if (requestCode == REQUEST_CALDAV_SETTINGS) { if (requestCode == REQUEST_CALDAV_SETTINGS) {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
syncAdapters.sync(true) syncAdapters.sync(true)
lifecycleScope.launch { workManager.updateBackgroundSync()
workManager.updateBackgroundSync()
}
} }
} else if (requestCode == REQUEST_GOOGLE_TASKS) { } else if (requestCode == REQUEST_GOOGLE_TASKS) {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
syncAdapters.sync(true) syncAdapters.sync(true)
lifecycleScope.launch { workManager.updateBackgroundSync()
workManager.updateBackgroundSync()
}
} else { } else {
data?.getStringExtra(GtasksLoginActivity.EXTRA_ERROR)?.let { toaster.longToast(it) } data?.getStringExtra(GtasksLoginActivity.EXTRA_ERROR)?.let { toaster.longToast(it) }
} }

@ -1,6 +1,5 @@
package org.tasks.preferences.fragments package org.tasks.preferences.fragments
import android.app.Activity
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
@ -33,6 +32,7 @@ import javax.inject.Inject
const val REQUEST_CALDAV_SETTINGS = 10013 const val REQUEST_CALDAV_SETTINGS = 10013
const val REQUEST_GOOGLE_TASKS = 10014 const val REQUEST_GOOGLE_TASKS = 10014
private const val FRAG_TAG_ADD_ACCOUNT = "frag_tag_add_account"
@AndroidEntryPoint @AndroidEntryPoint
class Synchronization : InjectingPreferenceFragment() { class Synchronization : InjectingPreferenceFragment() {
@ -80,7 +80,7 @@ class Synchronization : InjectingPreferenceFragment() {
findPreference(R.string.add_account) findPreference(R.string.add_account)
.setOnPreferenceClickListener { .setOnPreferenceClickListener {
AddAccountDialog.showAddAccountDialog(requireActivity(), dialogBuilder) AddAccountDialog().show(parentFragmentManager, FRAG_TAG_ADD_ACCOUNT)
false false
} }
} }
@ -91,19 +91,6 @@ class Synchronization : InjectingPreferenceFragment() {
refresh() refresh()
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_CALDAV_SETTINGS) {
if (resultCode == Activity.RESULT_OK) {
syncAdapters.sync(true)
lifecycleScope.launch {
workManager.updateBackgroundSync()
}
}
} else {
super.onActivityResult(requestCode, resultCode, data)
}
}
private suspend fun addGoogleTasksAccounts(category: PreferenceCategory): Boolean { private suspend fun addGoogleTasksAccounts(category: PreferenceCategory): Boolean {
val accounts: List<GoogleTaskAccount> = googleTaskListDao.getAccounts() val accounts: List<GoogleTaskAccount> = googleTaskListDao.getAccounts()
for (googleTaskAccount in accounts) { for (googleTaskAccount in accounts) {

@ -1,15 +1,17 @@
package org.tasks.sync package org.tasks.sync
import android.app.Activity import android.app.Dialog
import android.content.DialogInterface
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.fragment.app.DialogFragment
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.caldav.CaldavAccountSettingsActivity import org.tasks.caldav.CaldavAccountSettingsActivity
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
@ -17,19 +19,24 @@ import org.tasks.etesync.EteSyncAccountSettingsActivity
import org.tasks.preferences.fragments.REQUEST_CALDAV_SETTINGS import org.tasks.preferences.fragments.REQUEST_CALDAV_SETTINGS
import org.tasks.preferences.fragments.REQUEST_GOOGLE_TASKS import org.tasks.preferences.fragments.REQUEST_GOOGLE_TASKS
import org.tasks.themes.DrawableUtil import org.tasks.themes.DrawableUtil
import javax.inject.Inject
object AddAccountDialog { @AndroidEntryPoint
fun showAddAccountDialog(activity: Activity, dialogBuilder: DialogBuilder) { class AddAccountDialog : DialogFragment() {
val services = activity.resources.getStringArray(R.array.synchronization_services)
val descriptions = activity.resources.getStringArray(R.array.synchronization_services_description) @Inject lateinit var dialogBuilder: DialogBuilder
val typedArray = activity.resources.obtainTypedArray(R.array.synchronization_services_icons)
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val services = requireActivity().resources.getStringArray(R.array.synchronization_services)
val descriptions = requireActivity().resources.getStringArray(R.array.synchronization_services_description)
val typedArray = requireActivity().resources.obtainTypedArray(R.array.synchronization_services_icons)
val icons = IntArray(typedArray.length()) val icons = IntArray(typedArray.length())
for (i in icons.indices) { for (i in icons.indices) {
icons[i] = typedArray.getResourceId(i, 0) icons[i] = typedArray.getResourceId(i, 0)
} }
typedArray.recycle() typedArray.recycle()
val adapter: ArrayAdapter<String> = object : ArrayAdapter<String>( val adapter: ArrayAdapter<String> = object : ArrayAdapter<String>(
activity, R.layout.simple_list_item_2_themed, R.id.text1, services) { requireActivity(), R.layout.simple_list_item_2_themed, R.id.text1, services) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = super.getView(position, convertView, parent) val view = super.getView(position, convertView, parent)
view.findViewById<TextView>(R.id.text1).text = services[position] view.findViewById<TextView>(R.id.text1).text = services[position]
@ -42,32 +49,30 @@ object AddAccountDialog {
return view return view
} }
} }
dialogBuilder return dialogBuilder
.newDialog() .newDialog()
.setTitle(R.string.choose_synchronization_service) .setTitle(R.string.choose_synchronization_service)
.setSingleChoiceItems( .setSingleChoiceItems(adapter, -1) { dialog, which ->
adapter,
-1
) { dialog: DialogInterface, which: Int ->
when (which) { when (which) {
0 -> activity.startActivityForResult( 0 -> activity?.startActivityForResult(
Intent(activity, GtasksLoginActivity::class.java), Intent(activity, GtasksLoginActivity::class.java),
REQUEST_GOOGLE_TASKS) REQUEST_GOOGLE_TASKS)
1 -> activity.startActivityForResult( 1 -> activity?.startActivityForResult(
Intent(activity, CaldavAccountSettingsActivity::class.java), Intent(activity, CaldavAccountSettingsActivity::class.java),
REQUEST_CALDAV_SETTINGS) REQUEST_CALDAV_SETTINGS)
2 -> activity.startActivityForResult( 2 -> activity?.startActivityForResult(
Intent(activity, EteSyncAccountSettingsActivity::class.java), Intent(activity, EteSyncAccountSettingsActivity::class.java),
REQUEST_CALDAV_SETTINGS) REQUEST_CALDAV_SETTINGS)
} }
dialog.dismiss() dialog.dismiss()
} }
.setNeutralButton(R.string.help) { _, _ -> .setNeutralButton(R.string.help) { _, _ ->
activity.startActivity( activity?.startActivity(Intent(
Intent( Intent.ACTION_VIEW,
Intent.ACTION_VIEW, Uri.parse(activity.getString(R.string.help_url_sync)))) Uri.parse(context?.getString(R.string.help_url_sync))))
} }
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show() .show()
} }
} }
Loading…
Cancel
Save