From 3df1fde938d1a5944ed9b05a98c7f812370ff165 Mon Sep 17 00:00:00 2001 From: tateisu Date: Fri, 13 Jan 2023 04:36:19 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=9D=E3=83=83=E3=83=97=E3=82=A2=E3=83=83?= =?UTF-8?q?=E3=83=97=E8=83=8C=E6=99=AF=E8=89=B2=E3=81=AE=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subwaytooter/appsetting/AppSettingItem.kt | 1 + .../itemviewholder/StatusButtonsPopup.kt | 31 ++++++++++++------- .../jp/juggler/subwaytooter/pref/PrefI.kt | 1 + app/src/main/res/layout/list_item_popup.xml | 18 +++++------ app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 33 insertions(+), 20 deletions(-) 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 86664142..fc4644ad 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/appsetting/AppSettingItem.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/appsetting/AppSettingItem.kt @@ -961,6 +961,7 @@ val appSettingRoot = AppSettingItem(null, SettingType.Section, R.string.app_sett } colorOpaque(PrefI.ipSearchBgColor, R.string.search_bar_background_color) + colorAlpha(PrefI.ipPopupBgColor, R.string.popup_background_color) colorAlpha(PrefI.ipAnnouncementsBgColor, R.string.announcement_background_color) colorAlpha(PrefI.ipVerifiedLinkBgColor, R.string.verified_link_background_color) colorAlpha(PrefI.ipVerifiedLinkFgColor, R.string.verified_link_foreground_color) diff --git a/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/StatusButtonsPopup.kt b/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/StatusButtonsPopup.kt index a25b872b..f2b0204a 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/StatusButtonsPopup.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/StatusButtonsPopup.kt @@ -1,13 +1,13 @@ package jp.juggler.subwaytooter.itemviewholder import android.annotation.SuppressLint +import android.content.res.ColorStateList import android.graphics.drawable.ColorDrawable import android.os.SystemClock import android.view.Gravity import android.view.MotionEvent import android.view.View import android.view.WindowManager -import android.widget.LinearLayout import android.widget.PopupWindow import androidx.recyclerview.widget.RecyclerView import jp.juggler.subwaytooter.ActMain @@ -15,7 +15,11 @@ import jp.juggler.subwaytooter.R import jp.juggler.subwaytooter.api.entity.TootNotification import jp.juggler.subwaytooter.api.entity.TootStatus import jp.juggler.subwaytooter.column.Column +import jp.juggler.subwaytooter.databinding.ListItemPopupBinding +import jp.juggler.subwaytooter.pref.PrefI import jp.juggler.util.LogCategory +import jp.juggler.util.attrColor +import jp.juggler.util.notZero import org.jetbrains.anko.matchParent import kotlin.math.max @@ -34,16 +38,14 @@ internal class StatusButtonsPopup( var lastPopupClose = 0L } - private val viewRoot: View + private val views = ListItemPopupBinding.inflate(activity.layoutInflater) private val buttonsForStatus: StatusButtons private var window: PopupWindow? = null init { @SuppressLint("InflateParams") - this.viewRoot = activity.layoutInflater.inflate(R.layout.list_item_popup, null, false) val statusButtonsViewHolder = StatusButtonsViewHolder(activity, matchParent, 0f) - viewRoot.findViewById(R.id.llBarPlaceHolder) - .addView(statusButtonsViewHolder.viewRoot) + views.llBarPlaceHolder.addView(statusButtonsViewHolder.viewRoot) this.buttonsForStatus = StatusButtons( activity, column, @@ -72,7 +74,7 @@ internal class StatusButtonsPopup( window.width = WindowManager.LayoutParams.WRAP_CONTENT window.height = WindowManager.LayoutParams.WRAP_CONTENT - window.contentView = viewRoot + window.contentView = views.root window.setBackgroundDrawable(ColorDrawable(0x00000000)) window.isTouchable = true window.isOutsideTouchable = true @@ -91,16 +93,23 @@ internal class StatusButtonsPopup( buttonsForStatus.bind(status, notification) buttonsForStatus.closeWindow = window + val bgColor = PrefI.ipPopupBgColor.invoke(activity.pref) + .notZero() ?: activity.attrColor(R.attr.colorStatusButtonsPopupBg) + val bgColorState = ColorStateList.valueOf(bgColor) + views.ivTriangleTop.backgroundTintList = bgColorState + views.ivTriangleBottom.backgroundTintList = bgColorState + views.llBarPlaceHolder.backgroundTintList = bgColorState + val density = activity.density fun Int.dp() = (this * density + 0.5f).toInt() // popupの大きさ - viewRoot.measure( + views.root.measure( View.MeasureSpec.makeMeasureSpec(listView.width, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(listView.height, View.MeasureSpec.AT_MOST) ) - val popupWidth = viewRoot.measuredWidth - val popupHeight = viewRoot.measuredHeight + val popupWidth = views.root.measuredWidth + val popupHeight = views.root.measuredHeight val location = IntArray(2) @@ -126,8 +135,8 @@ internal class StatusButtonsPopup( if (popupY > clipBottom) popupY = clipBottom // 画面の下側にあるならポップアップの吹き出しが下から出ているように見せる - viewRoot.findViewById(R.id.ivTriangleTop).visibility = View.GONE - viewRoot.findViewById(R.id.ivTriangleBottom).visibility = View.VISIBLE + views.ivTriangleTop.visibility = View.GONE + views.ivTriangleBottom.visibility = View.VISIBLE popupY -= popupHeight } diff --git a/app/src/main/java/jp/juggler/subwaytooter/pref/PrefI.kt b/app/src/main/java/jp/juggler/subwaytooter/pref/PrefI.kt index c1ebe58a..cbca5c57 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/pref/PrefI.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/pref/PrefI.kt @@ -112,6 +112,7 @@ object PrefI { val ipConversationMainTootBgColor = IntPref("ConversationMainTootBgColor", 0) val ipVerifiedLinkBgColor = IntPref("VerifiedLinkBgColor", 0) val ipVerifiedLinkFgColor = IntPref("VerifiedLinkFgColor", 0) + val ipPopupBgColor = IntPref("PopupBgColor", 0) // val ipTrendTagCountShowing = IntPref("TrendTagCountShowing", 0) // const val TTCS_WEEKLY = 0 diff --git a/app/src/main/res/layout/list_item_popup.xml b/app/src/main/res/layout/list_item_popup.xml index e06b0767..08a96173 100644 --- a/app/src/main/res/layout/list_item_popup.xml +++ b/app/src/main/res/layout/list_item_popup.xml @@ -1,35 +1,35 @@ - + android:importantForAccessibility="no" /> + tools:layout_height="100dp" /> - + android:visibility="gone" + tools:visibility="visible" /> \ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 23f3a6b8..f09c3eab 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -1163,5 +1163,6 @@ 端末上のデータにアクセスするには権限が必要です。 端末上のデータにアクセスする権限がありません。 + ポップアップ背景色 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8f592419..bdd0e0ac 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1172,4 +1172,5 @@ Permission required to access the device\'s media data. Missing app permission to access the device\'s media data. + Popup background color