Add the 'whole word' setting to the filter preferences UI (#1278)

This commit is contained in:
Levi Bard 2019-06-24 10:11:25 +02:00 committed by Konrad Pozniak
parent f19aa22bf1
commit 46efdf7830
3 changed files with 29 additions and 5 deletions

View file

@ -83,8 +83,8 @@ class FiltersActivity: BaseActivity() {
} }
} }
private fun createFilter(phrase: String) { private fun createFilter(phrase: String, wholeWord: Boolean) {
api.createFilter(phrase, listOf(context), false, true, "").enqueue(object: Callback<Filter> { api.createFilter(phrase, listOf(context), false, wholeWord, "").enqueue(object: Callback<Filter> {
override fun onResponse(call: Call<Filter>, response: Response<Filter>) { override fun onResponse(call: Call<Filter>, response: Response<Filter>) {
filters.add(response.body()!!) filters.add(response.body()!!)
refreshFilterDisplay() refreshFilterDisplay()
@ -102,11 +102,12 @@ class FiltersActivity: BaseActivity() {
.setTitle(R.string.filter_addition_dialog_title) .setTitle(R.string.filter_addition_dialog_title)
.setView(R.layout.dialog_filter) .setView(R.layout.dialog_filter)
.setPositiveButton(android.R.string.ok){ _, _ -> .setPositiveButton(android.R.string.ok){ _, _ ->
createFilter(dialog.phraseEditText.text.toString()) createFilter(dialog.phraseEditText.text.toString(), dialog.phraseWholeWord.isChecked)
} }
.setNeutralButton(android.R.string.cancel, null) .setNeutralButton(android.R.string.cancel, null)
.create() .create()
dialog.show() dialog.show()
dialog.phraseWholeWord.isChecked = true
} }
private fun setupEditDialogForItem(itemIndex: Int) { private fun setupEditDialogForItem(itemIndex: Int) {
@ -116,7 +117,7 @@ class FiltersActivity: BaseActivity() {
.setPositiveButton(R.string.filter_dialog_update_button) { _, _ -> .setPositiveButton(R.string.filter_dialog_update_button) { _, _ ->
val oldFilter = filters[itemIndex] val oldFilter = filters[itemIndex]
val newFilter = Filter(oldFilter.id, dialog.phraseEditText.text.toString(), oldFilter.context, val newFilter = Filter(oldFilter.id, dialog.phraseEditText.text.toString(), oldFilter.context,
oldFilter.expiresAt, oldFilter.irreversible, oldFilter.wholeWord) oldFilter.expiresAt, oldFilter.irreversible, dialog.phraseWholeWord.isChecked)
updateFilter(newFilter, itemIndex) updateFilter(newFilter, itemIndex)
} }
.setNegativeButton(R.string.filter_dialog_remove_button) { _, _ -> .setNegativeButton(R.string.filter_dialog_remove_button) { _, _ ->
@ -127,7 +128,9 @@ class FiltersActivity: BaseActivity() {
dialog.show() dialog.show()
// Need to show the dialog before referencing any elements from its view // Need to show the dialog before referencing any elements from its view
dialog.phraseEditText.setText(filters[itemIndex].phrase) val filter = filters[itemIndex]
dialog.phraseEditText.setText(filter.phrase)
dialog.phraseWholeWord.isChecked = filter.wholeWord
} }
private fun refreshFilterDisplay() { private fun refreshFilterDisplay() {

View file

@ -15,4 +15,23 @@
android:hint="@string/filter_add_description" android:hint="@string/filter_add_description"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
/> />
<CheckBox
android:id="@+id/phraseWholeWord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingEnd="24dp"
android:paddingStart="24dp"
android:text="@string/filter_dialog_whole_word"
app:layout_constraintTop_toBottomOf="@id/phraseEditText"
app:layout_constraintLeft_toLeftOf="parent"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingEnd="8dp"
android:paddingStart="8dp"
app:layout_constraintTop_toBottomOf="@id/phraseWholeWord"
app:layout_constraintLeft_toLeftOf="parent"
android:text="@string/filter_dialog_whole_word_description"
/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -323,6 +323,8 @@
<string name="filter_edit_dialog_title">Edit filter</string> <string name="filter_edit_dialog_title">Edit filter</string>
<string name="filter_dialog_remove_button">Remove</string> <string name="filter_dialog_remove_button">Remove</string>
<string name="filter_dialog_update_button">Update</string> <string name="filter_dialog_update_button">Update</string>
<string name="filter_dialog_whole_word">Whole word</string>
<string name="filter_dialog_whole_word_description">When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word</string>
<string name="filter_add_description">Phrase to filter</string> <string name="filter_add_description">Phrase to filter</string>
<string name="add_account_name">Add Account</string> <string name="add_account_name">Add Account</string>