Fix some back handlers

pull/2604/head
Alex Baker 2 years ago
parent ab02323f29
commit 738bf435db

@ -249,8 +249,8 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
requireActivity().onBackPressedDispatcher.addCallback(onBackPressed) requireActivity().onBackPressedDispatcher.addCallback(requireActivity(), onBackPressed)
} }
@OptIn(ExperimentalAnimationApi::class) @OptIn(ExperimentalAnimationApi::class)

@ -18,6 +18,7 @@ import org.tasks.dialogs.ColorWheelPicker
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
import org.tasks.dialogs.IconPickerDialog import org.tasks.dialogs.IconPickerDialog
import org.tasks.dialogs.IconPickerDialog.IconPickerCallback import org.tasks.dialogs.IconPickerDialog.IconPickerCallback
import org.tasks.extensions.addBackPressedCallback
import org.tasks.injection.ThemedInjectingAppCompatActivity import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.themes.ColorProvider import org.tasks.themes.ColorProvider
import org.tasks.themes.CustomIcons.getIconResId import org.tasks.themes.CustomIcons.getIconResId
@ -63,6 +64,10 @@ abstract class BaseListSettingsActivity : ThemedInjectingAppCompatActivity(), Ic
toolbar.inflateMenu(R.menu.menu_tag_settings) toolbar.inflateMenu(R.menu.menu_tag_settings)
} }
toolbar.setOnMenuItemClickListener(this) toolbar.setOnMenuItemClickListener(this)
addBackPressedCallback {
discard()
}
} }
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
@ -71,11 +76,6 @@ abstract class BaseListSettingsActivity : ThemedInjectingAppCompatActivity(), Ic
outState.putInt(EXTRA_SELECTED_ICON, selectedIcon) outState.putInt(EXTRA_SELECTED_ICON, selectedIcon)
} }
override fun onBackPressed() {
super.onBackPressed()
discard()
}
protected abstract fun hasChanges(): Boolean protected abstract fun hasChanges(): Boolean
protected abstract suspend fun save() protected abstract suspend fun save()
protected abstract val isNew: Boolean protected abstract val isNew: Boolean

@ -44,6 +44,7 @@ import org.tasks.dialogs.Linkify
import org.tasks.extensions.Context.cookiePersistor import org.tasks.extensions.Context.cookiePersistor
import org.tasks.extensions.Context.hideKeyboard import org.tasks.extensions.Context.hideKeyboard
import org.tasks.extensions.Context.openUri import org.tasks.extensions.Context.openUri
import org.tasks.extensions.addBackPressedCallback
import org.tasks.injection.ThemedInjectingAppCompatActivity import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.security.KeyStoreEncryption import org.tasks.security.KeyStoreEncryption
import org.tasks.ui.DisplayableException import org.tasks.ui.DisplayableException
@ -145,6 +146,10 @@ abstract class BaseCaldavAccountSettingsActivity : ThemedInjectingAppCompatActiv
} }
} }
} }
addBackPressedCallback {
discard()
}
} }
@get:StringRes @get:StringRes
@ -333,11 +338,6 @@ abstract class BaseCaldavAccountSettingsActivity : ThemedInjectingAppCompatActiv
} }
} }
override fun onBackPressed() {
super.onBackPressed()
discard()
}
private fun removeAccountPrompt() { private fun removeAccountPrompt() {
if (requestInProgress()) { if (requestInProgress()) {
return return

@ -1,10 +1,23 @@
package org.tasks.extensions package org.tasks.extensions
import android.app.Activity import android.app.Activity
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import org.tasks.extensions.Context.hideKeyboard import org.tasks.extensions.Context.hideKeyboard
fun Activity.hideKeyboard() { fun Activity.hideKeyboard() {
currentFocus?.let { currentFocus?.let {
hideKeyboard(it) hideKeyboard(it)
} }
}
fun ComponentActivity.addBackPressedCallback(block: () -> Unit) {
onBackPressedDispatcher.addCallback(
this,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
block()
}
}
)
} }

@ -1,5 +1,6 @@
package org.tasks.locale.ui.activity; package org.tasks.locale.ui.activity;
import android.annotation.SuppressLint;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.MenuItem; import android.view.MenuItem;
@ -105,9 +106,9 @@ public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCom
return binding.title.getText().toString().trim(); return binding.title.getText().toString().trim();
} }
@SuppressLint("MissingSuperCall")
@Override @Override
public void onBackPressed() { public void onBackPressed() {
super.onBackPressed();
discardButtonClick(); discardButtonClick();
} }

@ -16,10 +16,10 @@ import org.tasks.Strings.isNullOrEmpty
import org.tasks.billing.Inventory import org.tasks.billing.Inventory
import org.tasks.data.TagData import org.tasks.data.TagData
import org.tasks.databinding.ActivityTagPickerBinding import org.tasks.databinding.ActivityTagPickerBinding
import org.tasks.extensions.addBackPressedCallback
import org.tasks.injection.ThemedInjectingAppCompatActivity import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.themes.ColorProvider import org.tasks.themes.ColorProvider
import org.tasks.themes.Theme import org.tasks.themes.Theme
import java.util.*
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
@ -65,6 +65,22 @@ class TagPickerActivity : ThemedInjectingAppCompatActivity() {
recyclerView.layoutManager = LinearLayoutManager(this) recyclerView.layoutManager = LinearLayoutManager(this)
viewModel.observe(this) { recyclerAdapter.submitList(it) } viewModel.observe(this) { recyclerAdapter.submitList(it) }
editText.setText(viewModel.text) editText.setText(viewModel.text)
addBackPressedCallback {
if (isNullOrEmpty(viewModel.text)) {
val data = Intent()
data.putExtra(EXTRA_TASKS, taskIds)
data.putParcelableArrayListExtra(
EXTRA_PARTIALLY_SELECTED,
viewModel.getPartiallySelected()
)
data.putParcelableArrayListExtra(EXTRA_SELECTED, viewModel.getSelected())
setResult(Activity.RESULT_OK, data)
finish()
} else {
clear()
}
}
} }
private fun onToggle(tagData: TagData, vh: TagPickerViewHolder) = lifecycleScope.launch { private fun onToggle(tagData: TagData, vh: TagPickerViewHolder) = lifecycleScope.launch {
@ -80,20 +96,6 @@ class TagPickerActivity : ThemedInjectingAppCompatActivity() {
viewModel.search(text?.toString() ?: "") viewModel.search(text?.toString() ?: "")
} }
override fun onBackPressed() {
super.onBackPressed()
if (isNullOrEmpty(viewModel.text)) {
val data = Intent()
data.putExtra(EXTRA_TASKS, taskIds)
data.putParcelableArrayListExtra(EXTRA_PARTIALLY_SELECTED, viewModel.getPartiallySelected())
data.putParcelableArrayListExtra(EXTRA_SELECTED, viewModel.getSelected())
setResult(Activity.RESULT_OK, data)
finish()
} else {
clear()
}
}
private fun clear() { private fun clear() {
editText.setText("") editText.setText("")
} }

Loading…
Cancel
Save