Add EmojiFilter to SearchView input field.

fork-5.53.8
lucio-signal 2021-07-14 11:46:08 -03:00 zatwierdzone przez Greyson Parrelli
rodzic bf37d412e9
commit 2f3d04d3e8
5 zmienionych plików z 30 dodań i 41 usunięć

Wyświetl plik

@ -1,32 +0,0 @@
package org.thoughtcrime.securesms.components;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.EditText;
import androidx.annotation.AttrRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import org.thoughtcrime.securesms.R;
/**
* Custom styled search view that we can insert into ActionBar menus
*/
public class DarkSearchView extends androidx.appcompat.widget.SearchView {
public DarkSearchView(@NonNull Context context) {
this(context, null);
}
public DarkSearchView(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, R.attr.search_view_style_dark);
}
public DarkSearchView(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
super(context, attrs, defStyleAttr);
EditText searchText = findViewById(androidx.appcompat.R.id.search_src_text);
searchText.setTextColor(ContextCompat.getColor(context, R.color.signal_text_toolbar_subtitle));
}
}

Wyświetl plik

@ -1,13 +1,17 @@
package org.thoughtcrime.securesms.components;
import android.content.Context;
import android.text.InputFilter;
import android.util.AttributeSet;
import android.widget.TextView;
import androidx.annotation.AttrRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.emoji.EmojiFilter;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
/**
* Custom styled search view that we can insert into ActionBar menus
@ -23,5 +27,31 @@ public class SearchView extends androidx.appcompat.widget.SearchView {
public SearchView(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
super(context, attrs, defStyleAttr);
initEmojiFilter();
}
private void initEmojiFilter() {
if (!isInEditMode() && !SignalStore.settings().isPreferSystemEmoji()) {
TextView searchText = findViewById(androidx.appcompat.R.id.search_src_text);
if (searchText != null) {
searchText.setFilters(appendEmojiFilter(searchText));
}
}
}
private InputFilter[] appendEmojiFilter(@NonNull TextView view) {
InputFilter[] originalFilters = view.getFilters();
InputFilter[] result;
if (originalFilters != null) {
result = new InputFilter[originalFilters.length + 1];
System.arraycopy(originalFilters, 0, result, 1, originalFilters.length);
} else {
result = new InputFilter[1];
}
result[0] = new EmojiFilter(view);
return result;
}
}

Wyświetl plik

@ -3,7 +3,6 @@
<attr name="theme_type" format="string"/>
<attr name="search_view_style" format="reference" />
<attr name="search_view_style_dark" format="reference" />
<attr name="emoji_category_recent" format="reference"/>
<attr name="emoji_category_people" format="reference"/>

Wyświetl plik

@ -356,12 +356,6 @@
<item name="searchIcon">@drawable/ic_search_24</item>
</style>
<style name="Signal.SearchView.Dark">
<item name="closeIcon">@drawable/ic_x_conversation_20</item>
<item name="searchHintIcon">@drawable/ic_search_conversation_24</item>
<item name="searchIcon">@drawable/ic_search_conversation_24</item>
</style>
<style name="Signal.Toolbar.Overflow" parent="Widget.AppCompat.ActionButton.Overflow">
<item name="srcCompat">@drawable/ic_more_vert_24</item>
<item name="android:src">@null</item>

Wyświetl plik

@ -128,7 +128,6 @@
<item name="theme_type">light</item>
<item name="search_view_style">@style/Signal.SearchView</item>
<item name="search_view_style_dark">@style/Signal.SearchView.Dark</item>
<item name="bottomSheetDialogTheme">@style/Theme.Design.Light.BottomSheetDialog</item>
@ -183,7 +182,6 @@
<item name="theme_type">dark</item>
<item name="search_view_style">@style/Signal.SearchView</item>
<item name="search_view_style_dark">@style/Signal.SearchView.Dark</item>
<item name="bottomSheetDialogTheme">@style/Theme.Design.BottomSheetDialog</item>