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

@ -1,6 +1,5 @@
package org.tasks.preferences.fragments
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.lifecycle.lifecycleScope
@ -33,6 +32,7 @@ import javax.inject.Inject
const val REQUEST_CALDAV_SETTINGS = 10013
const val REQUEST_GOOGLE_TASKS = 10014
private const val FRAG_TAG_ADD_ACCOUNT = "frag_tag_add_account"
@AndroidEntryPoint
class Synchronization : InjectingPreferenceFragment() {
@ -80,7 +80,7 @@ class Synchronization : InjectingPreferenceFragment() {
findPreference(R.string.add_account)
.setOnPreferenceClickListener {
AddAccountDialog.showAddAccountDialog(requireActivity(), dialogBuilder)
AddAccountDialog().show(parentFragmentManager, FRAG_TAG_ADD_ACCOUNT)
false
}
}
@ -91,19 +91,6 @@ class Synchronization : InjectingPreferenceFragment() {
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 {
val accounts: List<GoogleTaskAccount> = googleTaskListDao.getAccounts()
for (googleTaskAccount in accounts) {

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