Skip to content

Commit 12e4fdb

Browse files
committed
improvement(deck-description): use 'Save/Close' buttons
Requested in review, instead of icons Issue 18749
1 parent 3012ef3 commit 12e4fdb

File tree

3 files changed

+21
-57
lines changed

3 files changed

+21
-57
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/dialogs/EditDeckDescriptionDialog.kt

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ package com.ichi2.anki.dialogs
1818

1919
import android.app.Dialog
2020
import android.os.Bundle
21-
import android.view.MenuItem
2221
import android.view.View
2322
import android.view.ViewGroup
2423
import android.widget.CheckBox
2524
import android.widget.ImageButton
2625
import androidx.activity.OnBackPressedCallback
26+
import androidx.appcompat.app.AlertDialog
2727
import androidx.core.os.bundleOf
2828
import androidx.core.widget.doOnTextChanged
2929
import androidx.fragment.app.DialogFragment
@@ -39,6 +39,9 @@ import com.ichi2.anki.dialogs.EditDeckDescriptionDialogViewModel.DismissType
3939
import com.ichi2.anki.libanki.DeckId
4040
import com.ichi2.anki.snackbar.showSnackbar
4141
import com.ichi2.utils.AndroidUiUtils.setFocusAndOpenKeyboard
42+
import com.ichi2.utils.create
43+
import com.ichi2.utils.negativeButton
44+
import com.ichi2.utils.positiveButton
4245
import com.ichi2.utils.show
4346
import kotlinx.coroutines.flow.filterNotNull
4447
import kotlinx.coroutines.launch
@@ -52,6 +55,7 @@ import timber.log.Timber
5255
class EditDeckDescriptionDialog : DialogFragment() {
5356
private val viewModel: EditDeckDescriptionDialogViewModel by viewModels()
5457

58+
private lateinit var alertDialog: AlertDialog
5559
private lateinit var dialogView: View
5660

5761
private val deckDescriptionInput: TextInputEditText
@@ -63,9 +67,6 @@ class EditDeckDescriptionDialog : DialogFragment() {
6367
private val toolbar: MaterialToolbar
6468
get() = dialogView.findViewById(R.id.topAppBar)
6569

66-
private val saveMenuItem: MenuItem
67-
get() = toolbar.menu.findItem(R.id.action_save)
68-
6970
private val onUnsavedChangesBackCallback =
7071
object : OnBackPressedCallback(enabled = false) {
7172
override fun handleOnBackPressed() {
@@ -76,13 +77,21 @@ class EditDeckDescriptionDialog : DialogFragment() {
7677
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
7778
this.dialogView = layoutInflater.inflate(R.layout.dialog_deck_description, null)
7879
return MaterialAlertDialogBuilder(requireContext())
79-
.show {
80+
.create {
8081
setView(dialogView)
82+
positiveButton(R.string.save)
83+
negativeButton(R.string.close)
8184
}.apply {
82-
setupDialogView(dialogView)
85+
alertDialog = this
86+
setOnShowListener {
87+
positiveButton.setOnClickListener { viewModel.saveAndExit() }
88+
negativeButton.setOnClickListener { viewModel.onBackRequested() }
89+
}
8390
setCanceledOnTouchOutside(false)
8491
setCancelable(false)
8592
onBackPressedDispatcher.addCallback(this, onUnsavedChangesBackCallback)
93+
show()
94+
setupDialogView(dialogView)
8695
}
8796
}
8897

@@ -111,23 +120,6 @@ class EditDeckDescriptionDialog : DialogFragment() {
111120
}
112121
}
113122

114-
// setup App Bar
115-
toolbar.apply {
116-
setNavigationOnClickListener {
117-
viewModel.onBackRequested()
118-
}
119-
120-
setOnMenuItemClickListener { menuItem ->
121-
when (menuItem.itemId) {
122-
R.id.action_save -> {
123-
viewModel.saveAndExit()
124-
true
125-
}
126-
else -> false
127-
}
128-
}
129-
}
130-
131123
setupFlows()
132124
}
133125

@@ -175,7 +167,7 @@ class EditDeckDescriptionDialog : DialogFragment() {
175167

176168
lifecycleScope.launch {
177169
viewModel.flowOfHasChanges.collect {
178-
saveMenuItem.isEnabled = it
170+
alertDialog.positiveButton.isEnabled = it
179171
onUnsavedChangesBackCallback.isEnabled = it
180172
}
181173
}

AnkiDroid/src/main/res/layout/dialog_deck_description.xml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
xmlns:tools="http://schemas.android.com/tools"
2020
android:orientation="vertical"
2121
android:layout_width="match_parent"
22-
android:layout_height="match_parent"
22+
android:layout_height="wrap_content"
2323
android:layout_marginHorizontal="8dp"
2424
>
2525

@@ -29,9 +29,8 @@
2929
android:layout_height="wrap_content"
3030
android:minHeight="?attr/actionBarSize"
3131
android:layout_marginEnd="2dp"
32+
android:layout_marginStart="8dp"
3233
app:layout_scrollFlags="enterAlways"
33-
app:menu="@menu/menu_deck_description"
34-
app:navigationIcon="@drawable/close_icon"
3534
app:navigationContentDescription="@string/close"
3635
tools:title="Deck name" />
3736

@@ -41,7 +40,8 @@
4140
android:layout_width="match_parent"
4241
android:layout_height="0dp"
4342
android:layout_weight="1"
44-
android:layout_marginHorizontal="16dp"
43+
android:layout_marginStart="16dp"
44+
android:layout_marginEnd="22dp"
4545
android:layout_marginBottom="8dp"
4646
app:layout_behavior="@string/appbar_scrolling_view_behavior">
4747

@@ -65,8 +65,7 @@
6565
android:layout_width="match_parent"
6666
android:layout_height="wrap_content"
6767
android:layout_marginStart="16dp"
68-
android:layout_marginEnd="2dp"
69-
android:layout_marginBottom="24dp">
68+
android:layout_marginEnd="10dp">
7069

7170
<CheckBox
7271
android:id="@+id/format_as_markdown"

AnkiDroid/src/main/res/menu/menu_deck_description.xml

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)