kopia lustrzana https://github.com/ryukoposting/Signal-Android
Add EmojiFilter to SearchView input field.
rodzic
bf37d412e9
commit
2f3d04d3e8
|
@ -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));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +1,17 @@
|
||||||
package org.thoughtcrime.securesms.components;
|
package org.thoughtcrime.securesms.components;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.text.InputFilter;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.AttrRes;
|
import androidx.annotation.AttrRes;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.R;
|
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
|
* 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) {
|
public SearchView(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
|
||||||
super(context, attrs, 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
<attr name="theme_type" format="string"/>
|
<attr name="theme_type" format="string"/>
|
||||||
|
|
||||||
<attr name="search_view_style" format="reference" />
|
<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_recent" format="reference"/>
|
||||||
<attr name="emoji_category_people" format="reference"/>
|
<attr name="emoji_category_people" format="reference"/>
|
||||||
|
|
|
@ -356,12 +356,6 @@
|
||||||
<item name="searchIcon">@drawable/ic_search_24</item>
|
<item name="searchIcon">@drawable/ic_search_24</item>
|
||||||
</style>
|
</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">
|
<style name="Signal.Toolbar.Overflow" parent="Widget.AppCompat.ActionButton.Overflow">
|
||||||
<item name="srcCompat">@drawable/ic_more_vert_24</item>
|
<item name="srcCompat">@drawable/ic_more_vert_24</item>
|
||||||
<item name="android:src">@null</item>
|
<item name="android:src">@null</item>
|
||||||
|
|
|
@ -128,7 +128,6 @@
|
||||||
<item name="theme_type">light</item>
|
<item name="theme_type">light</item>
|
||||||
|
|
||||||
<item name="search_view_style">@style/Signal.SearchView</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>
|
<item name="bottomSheetDialogTheme">@style/Theme.Design.Light.BottomSheetDialog</item>
|
||||||
|
|
||||||
|
@ -183,7 +182,6 @@
|
||||||
<item name="theme_type">dark</item>
|
<item name="theme_type">dark</item>
|
||||||
|
|
||||||
<item name="search_view_style">@style/Signal.SearchView</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>
|
<item name="bottomSheetDialogTheme">@style/Theme.Design.BottomSheetDialog</item>
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue