From 76332b74ab9484631f554b5fa7880e240f5123cf Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 28 Feb 2019 21:55:56 +0100 Subject: [PATCH] add emoji autocomplete to task form --- .../android/habitica/ui/activities/TaskFormActivity.kt | 9 +++++++++ .../android/habitica/ui/helpers/AutocompleteAdapter.kt | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt index d0d73f0f0..e83ae8c86 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt @@ -36,6 +36,7 @@ import com.habitrpg.android.habitica.modules.AppModule import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter +import com.habitrpg.android.habitica.ui.helpers.* import io.reactivex.functions.Consumer import io.realm.Realm import io.realm.RealmList @@ -229,6 +230,14 @@ class TaskFormActivity : BaseActivity() { createRemindersRecyclerView() } + val textAutocompleteAdapter = AutocompleteAdapter(this) + taskText.setAdapter(textAutocompleteAdapter) + taskText.threshold = 2 + taskText.setTokenizer(ChatInputTokenizer()) + val notesAutocompleteAdapter = AutocompleteAdapter(this) + taskNotes.setAdapter(notesAutocompleteAdapter) + taskNotes.threshold = 2 + taskNotes.setTokenizer(ChatInputTokenizer()) enableRepeatables() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/AutocompleteAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/AutocompleteAdapter.kt index 0e6cd8229..3e60ff49e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/AutocompleteAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/AutocompleteAdapter.kt @@ -17,7 +17,7 @@ import net.pherth.android.emoji_library.EmojiMap import net.pherth.android.emoji_library.EmojiParser import net.pherth.android.emoji_library.EmojiTextView -class AutocompleteAdapter(val context: Context, val socialRepository: SocialRepository, var autocompleteContext: String, var groupID: String?) : BaseAdapter(), Filterable { +class AutocompleteAdapter(val context: Context, val socialRepository: SocialRepository? = null, var autocompleteContext: String? = null, var groupID: String? = null) : BaseAdapter(), Filterable { private var userResults: List = arrayListOf() private var emojiResults: List = arrayListOf() private var isAutocompletingUsers = true @@ -27,12 +27,12 @@ class AutocompleteAdapter(val context: Context, val socialRepository: SocialRepo override fun performFiltering(constraint: CharSequence?): FilterResults { val filterResults = FilterResults() if (constraint != null && constraint.isNotEmpty()) { - if (constraint[0] == '@') { + if (constraint[0] == '@' && socialRepository != null) { isAutocompletingUsers = true userResults = socialRepository.findUsernames(constraint.toString().drop(1), autocompleteContext, groupID).blockingFirst(arrayListOf()) filterResults.values = userResults filterResults.count = userResults.size - } else { + } else if (constraint[0] == ':') { isAutocompletingUsers = false emojiResults = EmojiMap.invertedEmojiMap.keys.filter { it.startsWith(constraint) } filterResults.values = emojiResults