diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt b/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt
index 2814e99a..1a7b9b2b 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt
@@ -75,6 +75,7 @@ class ActMain : AppCompatActivity(),
var screenBottomPadding = 0
var timelineFont: Typeface = Typeface.DEFAULT
var timeline_font_bold: Typeface = Typeface.DEFAULT_BOLD
+ var eventFadeAlpha = 1f
}
// アプリ設定のキャッシュ
diff --git a/app/src/main/java/jp/juggler/subwaytooter/actmain/ActMainStyle.kt b/app/src/main/java/jp/juggler/subwaytooter/actmain/ActMainStyle.kt
index 7c63addc..19e0e6a9 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/actmain/ActMainStyle.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/actmain/ActMainStyle.kt
@@ -75,6 +75,12 @@ fun ActMain.reloadIconSize() {
ActMain.headerIconSize = parseIconSize(PrefS.spHeaderIconSize)
ActMain.stripIconSize = parseIconSize(PrefS.spStripIconSize)
ActMain.screenBottomPadding = parseIconSize(PrefS.spScreenBottomPadding, minDp = 0f)
+
+ ActMain.eventFadeAlpha = PrefS.spEventTextAlpha()
+ .toFloatOrNull()
+ ?.takeIf{ it.isFinite()}
+ ?.clip(0f,1f)
+ ?: 1f
}
// initUIから呼ばれる
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 e174da2f..f7452880 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/appsetting/AppSettingItem.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/appsetting/AppSettingItem.kt
@@ -787,6 +787,8 @@ val appSettingRoot = AppSettingItem(null, SettingType.Section, R.string.app_sett
sw(PrefB.bpUseTwemoji, R.string.use_twemoji_emoji)
sw(PrefB.bpKeepReactionSpace, R.string.keep_reaction_space)
+
+ text(PrefS.spEventTextAlpha, R.string.event_text_alpha, InputTypeEx.numberDecimal)
}
section(R.string.color) {
diff --git a/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderPreviewCard.kt b/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderPreviewCard.kt
index 10f39093..c29ad046 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderPreviewCard.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderPreviewCard.kt
@@ -1,6 +1,7 @@
package jp.juggler.subwaytooter.itemviewholder
import android.view.View
+import jp.juggler.subwaytooter.ActMain
import jp.juggler.subwaytooter.R
import jp.juggler.subwaytooter.api.entity.TootStatus
import jp.juggler.subwaytooter.column.ColumnType
@@ -45,7 +46,7 @@ private fun addLinkAndCaption(
}
}
-fun ItemViewHolder.showPreviewCard(status: TootStatus) {
+fun ItemViewHolder.showPreviewCard(status: TootStatus, fadeText: Boolean) {
if (PrefB.bpDontShowPreviewCard(activity.pref)) return
@@ -73,6 +74,12 @@ fun ItemViewHolder.showPreviewCard(status: TootStatus) {
tvCardText.visibility = View.VISIBLE
tvCardText.text = text
bShowOuter = true
+
+ val fadeAlpha = ActMain.eventFadeAlpha
+ if (fadeAlpha < 1f) {
+ val a = if (fadeText) fadeAlpha else 1f
+ tvCardText.alpha = a
+ }
}
}
}
diff --git a/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderShowNotification.kt b/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderShowNotification.kt
index a1b6d739..39eb31cf 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderShowNotification.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderShowNotification.kt
@@ -2,7 +2,6 @@ package jp.juggler.subwaytooter.itemviewholder
import android.view.Gravity
import android.view.View
-import jp.juggler.subwaytooter.pref.PrefI
import jp.juggler.subwaytooter.R
import jp.juggler.subwaytooter.Styler
import jp.juggler.subwaytooter.actmain.addColumn
@@ -12,6 +11,7 @@ import jp.juggler.subwaytooter.api.entity.TootNotification
import jp.juggler.subwaytooter.api.entity.TootReaction
import jp.juggler.subwaytooter.api.entity.TootStatus
import jp.juggler.subwaytooter.column.ColumnType
+import jp.juggler.subwaytooter.pref.PrefI
import jp.juggler.util.notZero
import org.jetbrains.anko.backgroundColor
@@ -68,29 +68,53 @@ fun ItemViewHolder.showNotification(n: TootNotification) {
}
}
-private fun ItemViewHolder.showNotificationFollow(n: TootNotification, nAccountRef: TootAccountRef?) {
+private fun ItemViewHolder.showNotificationFollow(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?
+) {
val colorBg = PrefI.ipEventBgColorFollow(activity.pref)
colorBg.notZero()?.let { viewRoot.backgroundColor = it }
nAccountRef?.let {
- showBoost(it, n.time_created_at, R.drawable.ic_follow_plus, R.string.display_name_followed_by)
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_follow_plus,
+ R.string.display_name_followed_by
+ )
showAccount(it)
}
}
-private fun ItemViewHolder.showNotificationUnfollow(n: TootNotification, nAccountRef: TootAccountRef?) {
+private fun ItemViewHolder.showNotificationUnfollow(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?
+) {
val colorBg = PrefI.ipEventBgColorUnfollow(activity.pref)
colorBg.notZero()?.let { viewRoot.backgroundColor = it }
nAccountRef?.let {
- showBoost(it, n.time_created_at, R.drawable.ic_follow_cross, R.string.display_name_unfollowed_by)
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_follow_cross,
+ R.string.display_name_unfollowed_by
+ )
showAccount(it)
}
}
-private fun ItemViewHolder.showNotificationFollowRequest(n: TootNotification, nAccountRef: TootAccountRef?) {
+private fun ItemViewHolder.showNotificationFollowRequest(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?
+) {
val colorBg = PrefI.ipEventBgColorFollowRequest(activity.pref)
colorBg.notZero()?.let { viewRoot.backgroundColor = it }
nAccountRef?.let {
- showBoost(it, n.time_created_at, R.drawable.ic_follow_wait, R.string.display_name_follow_request_by)
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_follow_wait,
+ R.string.display_name_follow_request_by
+ )
showAccount(it)
}
boostedAction = {
@@ -98,16 +122,28 @@ private fun ItemViewHolder.showNotificationFollowRequest(n: TootNotification, nA
}
}
-private fun ItemViewHolder.showNotificationFollowRequestAccepted(n: TootNotification, nAccountRef: TootAccountRef?) {
+private fun ItemViewHolder.showNotificationFollowRequestAccepted(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?
+) {
val colorBg = PrefI.ipEventBgColorFollow(activity.pref)
colorBg.notZero()?.let { viewRoot.backgroundColor = it }
nAccountRef?.let {
- showBoost(it, n.time_created_at, R.drawable.ic_follow_plus, R.string.display_name_follow_request_accepted_by)
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_follow_plus,
+ R.string.display_name_follow_request_accepted_by
+ )
showAccount(it)
}
}
-private fun ItemViewHolder.showNotificationPost(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
+private fun ItemViewHolder.showNotificationPost(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
val colorBg = PrefI.ipEventBgColorStatus(activity.pref)
val iconId = when (nStatus) {
null -> R.drawable.ic_question
@@ -117,7 +153,11 @@ private fun ItemViewHolder.showNotificationPost(n: TootNotification, nAccountRef
nStatus?.let { showNotificationStatus(it, colorBg) }
}
-private fun ItemViewHolder.showNotificationReaction(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
+private fun ItemViewHolder.showNotificationReaction(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
val colorBg = PrefI.ipEventBgColorReaction(activity.pref)
nAccountRef?.let {
showBoost(
@@ -131,16 +171,24 @@ private fun ItemViewHolder.showNotificationReaction(n: TootNotification, nAccoun
nStatus?.let { showNotificationStatus(it, colorBg) }
}
-private fun ItemViewHolder.showNotificationFavourite(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
+private fun ItemViewHolder.showNotificationFavourite(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
nAccountRef?.let {
val iconId = if (accessInfo.isNicoru(it.get())) R.drawable.ic_nicoru else R.drawable.ic_star
showBoost(it, n.time_created_at, iconId, R.string.display_name_favourited_by)
}
val colorBg = PrefI.ipEventBgColorFavourite(activity.pref)
- nStatus?.let { showNotificationStatus(it, colorBg) }
+ nStatus?.let { showNotificationStatus(it, colorBg, fadeText = true) }
}
-private fun ItemViewHolder.showNotificationReblog(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
+private fun ItemViewHolder.showNotificationReblog(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
nAccountRef?.let {
showBoost(
it,
@@ -152,19 +200,33 @@ private fun ItemViewHolder.showNotificationReblog(n: TootNotification, nAccountR
)
}
val colorBg = PrefI.ipEventBgColorBoost(activity.pref)
- nStatus?.let { showNotificationStatus(it, colorBg) }
+ nStatus?.let { showNotificationStatus(it, colorBg, fadeText = true) }
}
-private fun ItemViewHolder.showNotificationRenote(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
+private fun ItemViewHolder.showNotificationRenote(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
// 引用のないreblog
nAccountRef?.let {
- showBoost(it, n.time_created_at, R.drawable.ic_repeat, R.string.display_name_boosted_by, boostStatus = nStatus)
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_repeat,
+ R.string.display_name_boosted_by,
+ boostStatus = nStatus
+ )
}
val colorBg = PrefI.ipEventBgColorBoost(activity.pref)
nStatus?.let { showNotificationStatus(it, colorBg) }
}
-private fun ItemViewHolder.showNotificationMention(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
+private fun ItemViewHolder.showNotificationMention(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
// メンション通知に「~~からの返信」を表示するカラムなのかどうか
fun willShowReplyInfo(status: TootStatus?): Boolean = when {
// メンションではなく返信の場合、トゥート内部に「~への返信」を表示するので
@@ -176,34 +238,85 @@ private fun ItemViewHolder.showNotificationMention(n: TootNotification, nAccount
}
if (willShowReplyInfo(nStatus)) {
- nAccountRef?.let { showBoost(it, n.time_created_at, R.drawable.ic_reply, R.string.display_name_mentioned_by) }
+ nAccountRef?.let {
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_reply,
+ R.string.display_name_mentioned_by
+ )
+ }
}
val colorBg = PrefI.ipEventBgColorMention(activity.pref)
nStatus?.let { showNotificationStatus(it, colorBg) }
}
-private fun ItemViewHolder.showNotificationQuote(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
- nAccountRef?.let { showBoost(it, n.time_created_at, R.drawable.ic_repeat, R.string.display_name_quoted_by) }
+private fun ItemViewHolder.showNotificationQuote(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
+ nAccountRef?.let {
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_repeat,
+ R.string.display_name_quoted_by
+ )
+ }
val colorBg = PrefI.ipEventBgColorQuote(activity.pref)
nStatus?.let { showNotificationStatus(it, colorBg) }
}
-private fun ItemViewHolder.showNotificationVote(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
- nAccountRef?.let { showBoost(it, n.time_created_at, R.drawable.ic_vote, R.string.display_name_voted_by) }
+private fun ItemViewHolder.showNotificationVote(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
+ nAccountRef?.let {
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_vote,
+ R.string.display_name_voted_by
+ )
+ }
val colorBg = PrefI.ipEventBgColorVote(activity.pref)
nStatus?.let { showNotificationStatus(it, colorBg) }
}
-private fun ItemViewHolder.showNotificationPoll(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
- nAccountRef?.let { showBoost(it, n.time_created_at, R.drawable.ic_vote, R.string.end_of_polling_from) }
+private fun ItemViewHolder.showNotificationPoll(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
+ nAccountRef?.let {
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_vote,
+ R.string.end_of_polling_from
+ )
+ }
val colorBg = 0
nStatus?.let { showNotificationStatus(it, colorBg) }
}
-private fun ItemViewHolder.showNotificationUnknown(n: TootNotification, nAccountRef: TootAccountRef?, nStatus: TootStatus?) {
- nAccountRef?.let { showBoost(it, n.time_created_at, R.drawable.ic_question, R.string.unknown_notification_from) }
+private fun ItemViewHolder.showNotificationUnknown(
+ n: TootNotification,
+ nAccountRef: TootAccountRef?,
+ nStatus: TootStatus?
+) {
+ nAccountRef?.let {
+ showBoost(
+ it,
+ n.time_created_at,
+ R.drawable.ic_question,
+ R.string.unknown_notification_from
+ )
+ }
val colorBg = 0
nStatus?.let { showNotificationStatus(it, colorBg) }
@@ -212,21 +325,25 @@ private fun ItemViewHolder.showNotificationUnknown(n: TootNotification, nAccount
tvMessageHolder.gravity = Gravity.CENTER
}
-private fun ItemViewHolder.showNotificationStatus(item: TootStatus, colorBgDefault: Int) {
+private fun ItemViewHolder.showNotificationStatus(
+ item: TootStatus,
+ colorBgDefault: Int,
+ fadeText: Boolean = false
+) {
val reblog = item.reblog
when {
- reblog == null -> showStatusOrReply(item, colorBgDefault)
+ reblog == null -> showStatusOrReply(item, colorBgDefault, fadeText = fadeText)
item.isQuoteToot -> {
// 引用Renote
showReply(reblog, R.drawable.ic_repeat, R.string.quote_to)
- showStatus(item, PrefI.ipEventBgColorQuote(activity.pref))
+ showStatus(item, PrefI.ipEventBgColorQuote(activity.pref), fadeText = fadeText)
}
else -> {
// 通常のブースト。引用なしブースト。
// ブースト表示は通知イベントと被るのでしない
- showStatusOrReply(reblog, PrefI.ipEventBgColorBoost(activity.pref))
+ showStatusOrReply(reblog, PrefI.ipEventBgColorBoost(activity.pref), fadeText = fadeText)
}
}
}
diff --git a/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderShowStatus.kt b/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderShowStatus.kt
index 60f3c847..5dcbce36 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderShowStatus.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/itemviewholder/ItemViewHolderShowStatus.kt
@@ -4,6 +4,7 @@ import android.text.Spannable
import android.text.SpannableStringBuilder
import android.view.View
import android.widget.ImageView
+import jp.juggler.subwaytooter.ActMain
import jp.juggler.subwaytooter.R
import jp.juggler.subwaytooter.Styler
import jp.juggler.subwaytooter.actmain.checkAutoCW
@@ -20,7 +21,11 @@ import jp.juggler.util.*
import org.jetbrains.anko.backgroundColor
import org.jetbrains.anko.textColor
-fun ItemViewHolder.showStatusOrReply(item: TootStatus, colorBgArg: Int = 0) {
+fun ItemViewHolder.showStatusOrReply(
+ item: TootStatus,
+ colorBgArg: Int = 0,
+ fadeText: Boolean = false
+) {
var colorBg = colorBgArg
val reply = item.reply
val inReplyToId = item.in_reply_to_id
@@ -36,10 +41,14 @@ fun ItemViewHolder.showStatusOrReply(item: TootStatus, colorBgArg: Int = 0) {
if (colorBgArg == 0) colorBg = PrefI.ipEventBgColorMention(activity.pref)
}
}
- showStatus(item, colorBg)
+ showStatus(item, colorBg, fadeText = fadeText)
}
-fun ItemViewHolder.showStatus(status: TootStatus, colorBg: Int = 0) {
+fun ItemViewHolder.showStatus(
+ status: TootStatus,
+ colorBg: Int = 0,
+ fadeText: Boolean = false
+) {
val filteredWord = status.filteredWord
if (filteredWord != null) {
@@ -115,6 +124,15 @@ fun ItemViewHolder.showStatus(status: TootStatus, colorBg: Int = 0) {
// tvTags.setText( status.decoded_tags );
// }
+ val fadeAlpha = ActMain.eventFadeAlpha
+ if (fadeAlpha < 1f) {
+ val a = if (fadeText) fadeAlpha else 1f
+ tvMentions.alpha = a
+ tvContentWarning.alpha = a
+ tvContent.alpha = a
+ tvApplication.alpha = a
+ }
+
if (status.decoded_mentions.isEmpty()) {
tvMentions.visibility = View.GONE
} else {
@@ -129,7 +147,7 @@ fun ItemViewHolder.showStatus(status: TootStatus, colorBg: Int = 0) {
val r = status.auto_cw
tvContent.minLines = r?.originalLineCount ?: -1
- showPreviewCard(status)
+ showPreviewCard(status, fadeText = fadeText)
showSpoilerTextAndContent(status)
showAttachments(status)
makeReactionsView(status)
diff --git a/app/src/main/java/jp/juggler/subwaytooter/pref/PrefS.kt b/app/src/main/java/jp/juggler/subwaytooter/pref/PrefS.kt
index c575182a..152b1c1c 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/pref/PrefS.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/pref/PrefS.kt
@@ -49,4 +49,6 @@ object PrefS {
// val spWebBrowser = StringPref("WebBrowser", "")
val spTimelineSpacing = StringPref("TimelineSpacing", "")
+
+ val spEventTextAlpha = StringPref("EventTextAlpha", "")
}
\ 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 ce8f523f..95515ba1 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -1107,4 +1107,5 @@
URLの指定が変です
ユーザや投稿のURL
ブックマーク解除
+ 一部の通知の本文アルファ値(0.0~1.0, デフォルト:1)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 61b1d350..7682afb6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1118,4 +1118,5 @@
URL of user or status
parse error.
Unbookmark
+ Text alpha value for some notifications (0.0~1.0, default:1)