diff --git a/app/src/main/java/jp/juggler/subwaytooter/appsetting/AppSettingItem.kt b/app/src/main/java/jp/juggler/subwaytooter/appsetting/AppSettingItem.kt
index e152348d..d086c629 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/appsetting/AppSettingItem.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/appsetting/AppSettingItem.kt
@@ -520,7 +520,7 @@ val appSettingRoot = AppSettingItem(null, SettingType.Section, R.string.app_sett
sw(PrefB.bpDisableEmojiAnimation, R.string.disable_custom_emoji_animation)
}
- section(R.string.emoji){
+ section(R.string.emoji) {
sw(PrefB.bpUseTwemoji, R.string.use_twemoji_emoji)
@@ -570,6 +570,10 @@ val appSettingRoot = AppSettingItem(null, SettingType.Section, R.string.app_sett
R.string.emoji_texture_pixels,
InputTypeEx.number
)
+ sw(
+ PrefB.bpCollapseEmojiPickerCategory,
+ R.string.emoji_picker_category_collapse
+ )
}
section(R.string.appearance) {
@@ -1073,7 +1077,7 @@ val appSettingRoot = AppSettingItem(null, SettingType.Section, R.string.app_sett
section(R.string.developer_options) {
sw(PrefB.bpCheckBetaVersion, R.string.check_beta_release)
- sw(PrefB.bpEnableDeprecatedSomething,R.string.enable_deprecated_something)
+ sw(PrefB.bpEnableDeprecatedSomething, R.string.enable_deprecated_something)
action(R.string.drawable_list) {
action = { startActivity(Intent(this, ActDrawableList::class.java)) }
@@ -1116,7 +1120,7 @@ val appSettingRoot = AppSettingItem(null, SettingType.Section, R.string.app_sett
}
- section(R.string.bug_report){
+ section(R.string.bug_report) {
spinnerSimple(
PrefI.ipLogSaveLevel,
R.string.log_save_level, // name
@@ -1128,7 +1132,7 @@ val appSettingRoot = AppSettingItem(null, SettingType.Section, R.string.app_sett
R.string.log_warn, //5
R.string.log_error, //6
R.string.log_assert, //7
- ){
+ ) {
desc = R.string.log_save_level_desc
}
diff --git a/app/src/main/java/jp/juggler/subwaytooter/dialog/EmojiPicker.kt b/app/src/main/java/jp/juggler/subwaytooter/dialog/EmojiPicker.kt
index ee0672f9..38f1b56b 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/dialog/EmojiPicker.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/dialog/EmojiPicker.kt
@@ -10,13 +10,12 @@ import android.view.*
import android.widget.FrameLayout
import android.widget.ImageButton
import android.widget.ImageView
-import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatButton
-import androidx.appcompat.widget.AppCompatImageButton
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.core.content.ContextCompat
+import androidx.core.graphics.drawable.DrawableCompat
import androidx.core.view.children
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
@@ -38,7 +37,6 @@ import jp.juggler.util.coroutine.launchAndShowError
import jp.juggler.util.data.*
import jp.juggler.util.log.*
import jp.juggler.util.ui.*
-import org.jetbrains.anko.image
import org.jetbrains.anko.wrapContent
import kotlin.math.abs
import kotlin.math.sign
@@ -199,20 +197,22 @@ private class EmojiPicker(
abstract fun bind(item: PickerItem)
}
- private var lastExpandCategory: PickerItemCategory? = null
- private var canCollapse = true
-
private inner class VhCategory(
- view: LinearLayout = LinearLayout(activity),
+ view: FrameLayout = FrameLayout(activity),
) : ViewHolderBase(view) {
var lastItem: PickerItemCategory? = null
- val ibExpand = AppCompatImageButton(activity).apply {
- layoutParams = LinearLayout.LayoutParams(gridSize, matchParent)
+ val tv = AppCompatTextView(activity).apply {
+ layoutParams = FrameLayout.LayoutParams(headerWidth, wrapContent)
+ minHeightCompat = (density * 48f + 0.5f).toInt()
+ gravity = Gravity.START or Gravity.CENTER_VERTICAL
+ includeFontPadding = false
background = ContextCompat.getDrawable(
this@EmojiPicker.activity,
R.drawable.btn_bg_transparent_round6dp
)
+ compoundDrawablePadding = (density * 4f + 0.5f).toInt()
+
setOnClickListener {
val orig = lastItem?.original
?: return@setOnClickListener
@@ -227,36 +227,29 @@ private class EmojiPicker(
}
}
- val tv = AppCompatTextView(activity).apply {
- layoutParams = LinearLayout.LayoutParams(0, wrapContent).apply {
- weight = 1f
- }
- minHeightCompat = (density * 48f + 0.5f).toInt()
- gravity = Gravity.START or Gravity.CENTER_VERTICAL
- includeFontPadding = false
- }
-
init {
view.layoutParams = RecyclerView.LayoutParams(headerWidth, wrapContent)
view.setPadding(cellMargin, cellMargin, cellMargin, cellMargin)
- view.isBaselineAligned = false
- view.gravity = Gravity.START or Gravity.CENTER_VERTICAL
- view.addView(ibExpand)
view.addView(tv)
}
override fun bind(item: PickerItem) {
- if (item is PickerItemCategory) {
- lastItem = item
- tv.text = item.name
- ibExpand.vg(canCollapse)?.let {
- val drawableId = when (lastExpandCategory == item.original) {
- true -> R.drawable.ic_arrow_drop_down
- else -> R.drawable.ic_arrow_drop_up
- }
- it.image = ContextCompat.getDrawable(activity, drawableId)
+ if (item !is PickerItemCategory) return
+ lastItem = item
+ tv.text = item.name
+
+ val drawable = when {
+ !canCollapse -> null
+ lastExpandCategory == item.original -> R.drawable.ic_arrow_drop_down
+ else -> R.drawable.ic_arrow_drop_up
+ }?.let {
+ ContextCompat.getDrawable(activity, it)
+ }?.let {
+ DrawableCompat.wrap(it).also { d ->
+ DrawableCompat.setTint(d, activity.attrColor(R.attr.colorTextContent))
}
}
+ tv.setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null)
}
}
@@ -447,6 +440,9 @@ private class EmojiPicker(
private var recentCategory: PickerItemCategoryRecent? = null
+ private var lastExpandCategory: PickerItemCategory? = null
+ private var canCollapse = true
+
private val density = activity.resources.displayMetrics.density
val cellMargin = (density * 1f + 0.5f).toInt()
val gridSize = (density * 48f + 0.5f).toInt()
@@ -615,8 +611,9 @@ private class EmojiPicker(
lastSelectedCategory = selectedCategory
lastSelectedKeyword = selectedKeyword
val keywordLower = selectedKeyword?.lowercase()?.trim()
- this.canCollapse =
- keywordLower.isNullOrEmpty() && (selectedCategory == null || selectedCategory == EmojiCategory.Custom)
+ this.canCollapse = PrefB.bpCollapseEmojiPickerCategory.value &&
+ keywordLower.isNullOrEmpty() &&
+ (selectedCategory == null || selectedCategory == EmojiCategory.Custom)
adapter.list = buildList {
val filteredCategories = pickerCategries.filter {
diff --git a/app/src/main/java/jp/juggler/subwaytooter/pref/PrefB.kt b/app/src/main/java/jp/juggler/subwaytooter/pref/PrefB.kt
index 94484425..ef765610 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/pref/PrefB.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/pref/PrefB.kt
@@ -364,4 +364,8 @@ object PrefB {
"EnableDeprecatedSomething",
false
)
+ val bpCollapseEmojiPickerCategory = BooleanPref(
+ "CollapseEmojiPickerCategory",
+ true
+ )
}
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index e23a8d18..11051ad5 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -1269,4 +1269,5 @@
有効
無効
絵文字テクスチャの最大ピクセル数(単位:ピクセル、デフォルト: 128。 タスクキルが必要。端末のRAMが少ない場合は64程度まで下げることをお勧めします)
+ 絵文字ピッカーのカテゴリを折りたたむ(サーバーに多くの絵文字がある場合はオフにすると非常に遅くなります)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e3baf237..ec83bff3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1277,4 +1277,5 @@
Enabled
Disabled
Emoji texture max pixels(Unix:pixels, default: 128. task kill required. reduce to 64 if your device\'s RAM is not enough)
+ Collapse emoji picker categories (turning off it will very slow if your servers has a lot of emojis)