Tied logic to reverse order or yesBtn and noBtn to CheckmarkDialog.kt. Tested implementation and seems to work fine with both options from the settings-panel flipped!

pull/2198/head
Helskog 2 months ago
parent 3f6278e124
commit e84761e8cc

@ -35,37 +35,76 @@ import org.isoron.uhabits.core.models.Entry.Companion.YES_MANUAL
import org.isoron.uhabits.databinding.CheckmarkPopupBinding import org.isoron.uhabits.databinding.CheckmarkPopupBinding
import org.isoron.uhabits.utils.InterfaceUtils.getFontAwesome import org.isoron.uhabits.utils.InterfaceUtils.getFontAwesome
import org.isoron.uhabits.utils.sres import org.isoron.uhabits.utils.sres
import androidx.core.view.isVisible
class CheckmarkDialog : AppCompatDialogFragment() { class CheckmarkDialog : AppCompatDialogFragment() {
var onToggle: (Int, String) -> Unit = { _, _ -> } var onToggle: (Int, String) -> Unit = { _, _ -> }
private fun shouldReverseButtons(): Boolean {
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
return sharedPreferences.getBoolean("pref_checkmark_reverse_cancel_confirm", false)
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val appComponent = (requireActivity().application as HabitsApplication).component val appComponent = (requireActivity().application as HabitsApplication).component
val prefs = appComponent.preferences val prefs = appComponent.preferences
val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context)) val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context))
val color = requireArguments().getInt("color") val color = requireArguments().getInt("color")
arrayOf(view.yesBtn, view.skipBtn).forEach {
val yesButton = view.yesBtn
val noButton = view.noBtn
val skipButton = view.skipBtn
val unknownButton = view.unknownBtn
val buttonContainer = view.booleanButtons
arrayOf(yesButton, skipButton, unknownButton).forEach {
it.setTextColor(color) it.setTextColor(color)
} }
arrayOf(view.noBtn, view.unknownBtn).forEach {
arrayOf(noButton, unknownButton).forEach {
it.setTextColor(view.root.sres.getColor(R.attr.contrast60)) it.setTextColor(view.root.sres.getColor(R.attr.contrast60))
} }
arrayOf(view.yesBtn, view.noBtn, view.skipBtn, view.unknownBtn).forEach {
arrayOf(yesButton, noButton, skipButton, unknownButton).forEach {
it.typeface = getFontAwesome(requireContext()) it.typeface = getFontAwesome(requireContext())
} }
view.notes.setText(requireArguments().getString("notes")!!) view.notes.setText(requireArguments().getString("notes")!!)
if (!prefs.isSkipEnabled) if (!prefs.isSkipEnabled)
view.skipBtn.visibility = GONE view.skipBtn.visibility = GONE
if (!prefs.areQuestionMarksEnabled) if (!prefs.areQuestionMarksEnabled)
view.unknownBtn.visibility = GONE view.unknownBtn.visibility = GONE
if (shouldReverseButtons()) {
buttonContainer.removeView(yesButton)
buttonContainer.removeView(noButton)
buttonContainer.removeAllViews()
buttonContainer.addView(yesButton)
if (view.skipBtn.isVisible) {
buttonContainer.addView(skipButton)
}
buttonContainer.addView(noButton)
if (view.unknownBtn.isVisible) {
buttonContainer.addView(unknownButton)
}
}
view.booleanButtons.visibility = VISIBLE view.booleanButtons.visibility = VISIBLE
val dialog = Dialog(requireContext()) val dialog = Dialog(requireContext())
dialog.setContentView(view.root) dialog.setContentView(view.root)
dialog.window?.apply { dialog.window?.apply {
setBackgroundDrawableResource(android.R.color.transparent) setBackgroundDrawableResource(android.R.color.transparent)
} }
fun onClick(v: Int) { fun onClick(v: Int) {
val notes = view.notes.text.toString().trim() val notes = view.notes.text.toString().trim()
onToggle(v, notes) onToggle(v, notes)
@ -75,6 +114,7 @@ class CheckmarkDialog : AppCompatDialogFragment() {
view.noBtn.setOnClickListener { onClick(NO) } view.noBtn.setOnClickListener { onClick(NO) }
view.skipBtn.setOnClickListener { onClick(SKIP) } view.skipBtn.setOnClickListener { onClick(SKIP) }
view.unknownBtn.setOnClickListener { onClick(UNKNOWN) } view.unknownBtn.setOnClickListener { onClick(UNKNOWN) }
view.notes.setOnEditorActionListener { v, actionId, event -> view.notes.setOnEditorActionListener { v, actionId, event ->
onClick(requireArguments().getInt("value")) onClick(requireArguments().getInt("value"))
true true

Loading…
Cancel
Save