アプリ設定に「カラム色のデフォルト」を追加。createColoredDrawable の最適化
This commit is contained in:
parent
54cdecbd01
commit
d7b17a8d8a
|
@ -30,6 +30,7 @@ import jp.juggler.subwaytooter.util.handleGetContentResult
|
||||||
import jp.juggler.subwaytooter.util.intentOpenDocument
|
import jp.juggler.subwaytooter.util.intentOpenDocument
|
||||||
import jp.juggler.subwaytooter.util.showToast
|
import jp.juggler.subwaytooter.util.showToast
|
||||||
import org.apache.commons.io.IOUtils
|
import org.apache.commons.io.IOUtils
|
||||||
|
import org.jetbrains.anko.textColor
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.io.OutputStreamWriter
|
import java.io.OutputStreamWriter
|
||||||
|
@ -67,8 +68,14 @@ class ActAppSetting : AppCompatActivity()
|
||||||
internal const val COLOR_DIALOG_ID_TOOT_BG_UNLISTED = 7
|
internal const val COLOR_DIALOG_ID_TOOT_BG_UNLISTED = 7
|
||||||
internal const val COLOR_DIALOG_ID_TOOT_BG_FOLLOWER = 8
|
internal const val COLOR_DIALOG_ID_TOOT_BG_FOLLOWER = 8
|
||||||
internal const val COLOR_DIALOG_ID_TOOT_BG_DIRECT_USER = 9
|
internal const val COLOR_DIALOG_ID_TOOT_BG_DIRECT_USER = 9
|
||||||
internal const val COLOR_DIALOG_ID_TOOT_BG_DIRECT_ME = 10
|
internal const val COLOR_DIALOG_ID_TOOT_BG_DIRECT_ME = 10
|
||||||
internal const val COLOR_DIALOG_ID_LINK = 11
|
internal const val COLOR_DIALOG_ID_LINK = 11
|
||||||
|
|
||||||
|
internal const val COLOR_DIALOG_ID_COLUMN_HEADER_BG = 12
|
||||||
|
internal const val COLOR_DIALOG_ID_COLUMN_HEADER_FG = 13
|
||||||
|
internal const val COLOR_DIALOG_ID_COLUMN_BG = 14
|
||||||
|
internal const val COLOR_DIALOG_ID_COLUMN_ACCT = 15
|
||||||
|
internal const val COLOR_DIALOG_ID_COLUMN_TEXT = 16
|
||||||
|
|
||||||
internal const val REQUEST_CODE_TIMELINE_FONT = 1
|
internal const val REQUEST_CODE_TIMELINE_FONT = 1
|
||||||
internal const val REQUEST_CODE_TIMELINE_FONT_BOLD = 2
|
internal const val REQUEST_CODE_TIMELINE_FONT_BOLD = 2
|
||||||
|
@ -117,6 +124,12 @@ class ActAppSetting : AppCompatActivity()
|
||||||
private var toot_color_direct_me : Int = 0
|
private var toot_color_direct_me : Int = 0
|
||||||
private var link_color : Int = 0
|
private var link_color : Int = 0
|
||||||
|
|
||||||
|
private var color_column_header_bg : Int = 0
|
||||||
|
private var color_column_header_fg : Int = 0
|
||||||
|
private var color_column_bg : Int = 0
|
||||||
|
private var color_column_acct : Int = 0
|
||||||
|
private var color_column_text : Int = 0
|
||||||
|
|
||||||
private lateinit var ivFooterToot : ImageView
|
private lateinit var ivFooterToot : ImageView
|
||||||
private lateinit var ivFooterMenu : ImageView
|
private lateinit var ivFooterMenu : ImageView
|
||||||
private lateinit var llFooterBG : View
|
private lateinit var llFooterBG : View
|
||||||
|
@ -137,7 +150,6 @@ class ActAppSetting : AppCompatActivity()
|
||||||
private lateinit var etBoostAlpha : EditText
|
private lateinit var etBoostAlpha : EditText
|
||||||
private lateinit var etMediaReadTimeout : EditText
|
private lateinit var etMediaReadTimeout : EditText
|
||||||
|
|
||||||
|
|
||||||
private lateinit var tvTimelineFontUrl : TextView
|
private lateinit var tvTimelineFontUrl : TextView
|
||||||
private var timeline_font : String? = null
|
private var timeline_font : String? = null
|
||||||
private lateinit var tvTimelineFontBoldUrl : TextView
|
private lateinit var tvTimelineFontBoldUrl : TextView
|
||||||
|
@ -154,11 +166,18 @@ class ActAppSetting : AppCompatActivity()
|
||||||
private lateinit var etNotificationTlFontSize : EditText
|
private lateinit var etNotificationTlFontSize : EditText
|
||||||
private lateinit var tvNotificationTlFontSize : TextView
|
private lateinit var tvNotificationTlFontSize : TextView
|
||||||
private lateinit var etNotificationTlIconSize : EditText
|
private lateinit var etNotificationTlIconSize : EditText
|
||||||
|
|
||||||
private lateinit var etBoostButtonSize : EditText
|
private lateinit var etBoostButtonSize : EditText
|
||||||
|
|
||||||
private lateinit var tvUserAgentError : TextView
|
private lateinit var tvUserAgentError : TextView
|
||||||
|
|
||||||
|
private lateinit var llColumnHeader : View
|
||||||
|
private lateinit var ivColumnHeader : ImageView
|
||||||
|
private lateinit var tvColumnName : TextView
|
||||||
|
private lateinit var flColumnBackground : View
|
||||||
|
private lateinit var tvSampleAcct : TextView
|
||||||
|
private lateinit var tvSampleContent : TextView
|
||||||
|
|
||||||
private var load_busy : Boolean = false
|
private var load_busy : Boolean = false
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
|
@ -171,7 +190,7 @@ class ActAppSetting : AppCompatActivity()
|
||||||
try {
|
try {
|
||||||
PollingWorker.scheduleJob(this, PollingWorker.JOB_POLLING)
|
PollingWorker.scheduleJob(this, PollingWorker.JOB_POLLING)
|
||||||
} catch(ex : Throwable) {
|
} catch(ex : Throwable) {
|
||||||
log.trace(ex,"PollingWorker.scheduleJob failed.")
|
log.trace(ex, "PollingWorker.scheduleJob failed.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,13 +241,13 @@ class ActAppSetting : AppCompatActivity()
|
||||||
, getString(R.string.replies_count_none)
|
, getString(R.string.replies_count_none)
|
||||||
)
|
)
|
||||||
|
|
||||||
spVisibilityStyle= initSpinner(
|
spVisibilityStyle = initSpinner(
|
||||||
R.id.spVisibilityStyle
|
R.id.spVisibilityStyle
|
||||||
, getString(R.string.visibility_style_by_account)
|
, getString(R.string.visibility_style_by_account)
|
||||||
, getString(R.string.mastodon)
|
, getString(R.string.mastodon)
|
||||||
, getString(R.string.misskey)
|
, getString(R.string.misskey)
|
||||||
)
|
)
|
||||||
spBoostButtonJustify= initSpinner(
|
spBoostButtonJustify = initSpinner(
|
||||||
R.id.spBoostButtonJustify
|
R.id.spBoostButtonJustify
|
||||||
, getString(R.string.start)
|
, getString(R.string.start)
|
||||||
, getString(R.string.center)
|
, getString(R.string.center)
|
||||||
|
@ -263,39 +282,51 @@ class ActAppSetting : AppCompatActivity()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
findViewById<View>(R.id.btnFooterBackgroundEdit).setOnClickListener(this)
|
intArrayOf(
|
||||||
findViewById<View>(R.id.btnFooterBackgroundReset).setOnClickListener(this)
|
R.id.btnFooterBackgroundEdit
|
||||||
findViewById<View>(R.id.btnFooterForegroundColorEdit).setOnClickListener(this)
|
, R.id.btnFooterBackgroundReset
|
||||||
findViewById<View>(R.id.btnFooterForegroundColorReset).setOnClickListener(this)
|
, R.id.btnFooterForegroundColorEdit
|
||||||
findViewById<View>(R.id.btnTabBackgroundColorEdit).setOnClickListener(this)
|
, R.id.btnFooterForegroundColorReset
|
||||||
findViewById<View>(R.id.btnTabBackgroundColorReset).setOnClickListener(this)
|
, R.id.btnTabBackgroundColorEdit
|
||||||
findViewById<View>(R.id.btnTabDividerColorEdit).setOnClickListener(this)
|
, R.id.btnTabBackgroundColorReset
|
||||||
findViewById<View>(R.id.btnTabDividerColorReset).setOnClickListener(this)
|
, R.id.btnTabDividerColorEdit
|
||||||
findViewById<View>(R.id.btnTabIndicatorColorEdit).setOnClickListener(this)
|
, R.id.btnTabDividerColorReset
|
||||||
findViewById<View>(R.id.btnTabIndicatorColorReset).setOnClickListener(this)
|
, R.id.btnTabIndicatorColorEdit
|
||||||
findViewById<View>(R.id.btnListDividerColorEdit).setOnClickListener(this)
|
, R.id.btnTabIndicatorColorReset
|
||||||
findViewById<View>(R.id.btnListDividerColorReset).setOnClickListener(this)
|
, R.id.btnListDividerColorEdit
|
||||||
|
, R.id.btnListDividerColorReset
|
||||||
|
, R.id.btnBackgroundColorUnlistedEdit
|
||||||
|
, R.id.btnBackgroundColorUnlistedReset
|
||||||
|
, R.id.btnBackgroundColorFollowerEdit
|
||||||
|
, R.id.btnBackgroundColorFollowerReset
|
||||||
|
, R.id.btnBackgroundColorDirectWithUserEdit
|
||||||
|
, R.id.btnBackgroundColorDirectWithUserReset
|
||||||
|
, R.id.btnBackgroundColorDirectNoUserEdit
|
||||||
|
, R.id.btnBackgroundColorDirectNoUserReset
|
||||||
|
, R.id.btnLinkColorEdit
|
||||||
|
, R.id.btnLinkColorReset
|
||||||
|
, R.id.btnTimelineFontEdit
|
||||||
|
, R.id.btnTimelineFontReset
|
||||||
|
, R.id.btnTimelineFontBoldEdit
|
||||||
|
, R.id.btnTimelineFontBoldReset
|
||||||
|
, R.id.btnSettingExport
|
||||||
|
, R.id.btnSettingImport
|
||||||
|
, R.id.btnCustomStreamListenerEdit
|
||||||
|
, R.id.btnCustomStreamListenerReset
|
||||||
|
, R.id.btnCcdHeaderBackgroundEdit
|
||||||
|
, R.id.btnCcdHeaderBackgroundReset
|
||||||
|
, R.id.btnCcdHeaderForegroundEdit
|
||||||
|
, R.id.btnCcdHeaderForegroundReset
|
||||||
|
, R.id.btnCcdContentBackgroundEdit
|
||||||
|
, R.id.btnCcdContentBackgroundReset
|
||||||
|
, R.id.btnCcdContentAcctEdit
|
||||||
|
, R.id.btnCcdContentAcctReset
|
||||||
|
, R.id.btnCcdContentTextEdit
|
||||||
|
, R.id.btnCcdContentTextReset
|
||||||
|
).forEach {
|
||||||
|
findViewById<View>(it).setOnClickListener(this)
|
||||||
|
}
|
||||||
|
|
||||||
findViewById<View>(R.id.btnBackgroundColorUnlistedEdit).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnBackgroundColorUnlistedReset).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnBackgroundColorFollowerEdit).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnBackgroundColorFollowerReset).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnBackgroundColorDirectWithUserEdit).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnBackgroundColorDirectWithUserReset).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnBackgroundColorDirectNoUserEdit).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnBackgroundColorDirectNoUserReset).setOnClickListener(this)
|
|
||||||
|
|
||||||
findViewById<View>(R.id.btnLinkColorEdit).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnLinkColorReset).setOnClickListener(this)
|
|
||||||
|
|
||||||
findViewById<View>(R.id.btnTimelineFontEdit).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnTimelineFontReset).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnTimelineFontBoldEdit).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnTimelineFontBoldReset).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnSettingExport).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnSettingImport).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnCustomStreamListenerEdit).setOnClickListener(this)
|
|
||||||
findViewById<View>(R.id.btnCustomStreamListenerReset).setOnClickListener(this)
|
|
||||||
|
|
||||||
ivFooterToot = findViewById(R.id.ivFooterToot)
|
ivFooterToot = findViewById(R.id.ivFooterToot)
|
||||||
ivFooterMenu = findViewById(R.id.ivFooterMenu)
|
ivFooterMenu = findViewById(R.id.ivFooterMenu)
|
||||||
|
@ -321,14 +352,14 @@ class ActAppSetting : AppCompatActivity()
|
||||||
|
|
||||||
etAutoCWLines = findViewById(R.id.etAutoCWLines)
|
etAutoCWLines = findViewById(R.id.etAutoCWLines)
|
||||||
etAutoCWLines.addTextChangedListener(this)
|
etAutoCWLines.addTextChangedListener(this)
|
||||||
|
|
||||||
etCardDescriptionLength = findViewById(R.id.etCardDescriptionLength)
|
etCardDescriptionLength = findViewById(R.id.etCardDescriptionLength)
|
||||||
etCardDescriptionLength.addTextChangedListener(this)
|
etCardDescriptionLength.addTextChangedListener(this)
|
||||||
|
|
||||||
etMediaSizeMax = findViewById(R.id.etMediaSizeMax)
|
etMediaSizeMax = findViewById(R.id.etMediaSizeMax)
|
||||||
etMediaSizeMax.addTextChangedListener(this)
|
etMediaSizeMax.addTextChangedListener(this)
|
||||||
|
|
||||||
etMovieSizeMax= findViewById(R.id.etMovieSizeMax)
|
etMovieSizeMax = findViewById(R.id.etMovieSizeMax)
|
||||||
etMovieSizeMax.addTextChangedListener(this)
|
etMovieSizeMax.addTextChangedListener(this)
|
||||||
|
|
||||||
etRoundRatio = findViewById(R.id.etRoundRatio)
|
etRoundRatio = findViewById(R.id.etRoundRatio)
|
||||||
|
@ -337,7 +368,7 @@ class ActAppSetting : AppCompatActivity()
|
||||||
etBoostAlpha = findViewById(R.id.etBoostAlpha)
|
etBoostAlpha = findViewById(R.id.etBoostAlpha)
|
||||||
etBoostAlpha.addTextChangedListener(this)
|
etBoostAlpha.addTextChangedListener(this)
|
||||||
|
|
||||||
etMediaReadTimeout= findViewById(R.id.etMediaReadTimeout)
|
etMediaReadTimeout = findViewById(R.id.etMediaReadTimeout)
|
||||||
etMediaReadTimeout.addTextChangedListener(this)
|
etMediaReadTimeout.addTextChangedListener(this)
|
||||||
|
|
||||||
tvTimelineFontSize = findViewById(R.id.tvTimelineFontSize)
|
tvTimelineFontSize = findViewById(R.id.tvTimelineFontSize)
|
||||||
|
@ -382,6 +413,14 @@ class ActAppSetting : AppCompatActivity()
|
||||||
|
|
||||||
|
|
||||||
tvUserAgentError = findViewById(R.id.tvUserAgentError)
|
tvUserAgentError = findViewById(R.id.tvUserAgentError)
|
||||||
|
|
||||||
|
llColumnHeader = findViewById(R.id.llColumnHeader)
|
||||||
|
ivColumnHeader = findViewById(R.id.ivColumnHeader)
|
||||||
|
tvColumnName = findViewById(R.id.tvColumnName)
|
||||||
|
flColumnBackground = findViewById(R.id.flColumnBackground)
|
||||||
|
tvSampleAcct = findViewById(R.id.tvSampleAcct)
|
||||||
|
tvSampleContent = findViewById(R.id.tvSampleContent)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initSpinner(@IdRes viewId : Int, vararg captions : String) : Spinner {
|
private fun initSpinner(@IdRes viewId : Int, vararg captions : String) : Spinner {
|
||||||
|
@ -430,6 +469,12 @@ class ActAppSetting : AppCompatActivity()
|
||||||
toot_color_direct_me = Pref.ipTootColorDirectMe(pref)
|
toot_color_direct_me = Pref.ipTootColorDirectMe(pref)
|
||||||
link_color = Pref.ipLinkColor(pref)
|
link_color = Pref.ipLinkColor(pref)
|
||||||
|
|
||||||
|
color_column_header_bg = Pref.ipCcdHeaderBg(pref)
|
||||||
|
color_column_header_fg = Pref.ipCcdHeaderFg(pref)
|
||||||
|
color_column_bg = Pref.ipCcdContentBg(pref)
|
||||||
|
color_column_acct = Pref.ipCcdContentAcct(pref)
|
||||||
|
color_column_text = Pref.ipCcdContentText(pref)
|
||||||
|
|
||||||
etColumnWidth.setText(Pref.spColumnWidth(pref))
|
etColumnWidth.setText(Pref.spColumnWidth(pref))
|
||||||
etMediaThumbHeight.setText(Pref.spMediaThumbHeight(pref))
|
etMediaThumbHeight.setText(Pref.spMediaThumbHeight(pref))
|
||||||
etClientName.setText(Pref.spClientName(pref))
|
etClientName.setText(Pref.spClientName(pref))
|
||||||
|
@ -473,6 +518,8 @@ class ActAppSetting : AppCompatActivity()
|
||||||
)
|
)
|
||||||
|
|
||||||
showUserAgentError()
|
showUserAgentError()
|
||||||
|
showColumnSample()
|
||||||
|
showColumnHeaderSample()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveUIToData() {
|
private fun saveUIToData() {
|
||||||
|
@ -512,7 +559,9 @@ class ActAppSetting : AppCompatActivity()
|
||||||
etUserAgent.text.toString().replace(reLinefeed, " ").trim { it <= ' ' })
|
etUserAgent.text.toString().replace(reLinefeed, " ").trim { it <= ' ' })
|
||||||
.put(Pref.spQuoteNameFormat, etQuoteNameFormat.text.toString()) // not trimmed
|
.put(Pref.spQuoteNameFormat, etQuoteNameFormat.text.toString()) // not trimmed
|
||||||
.put(Pref.spAutoCWLines, etAutoCWLines.text.toString().trim { it <= ' ' })
|
.put(Pref.spAutoCWLines, etAutoCWLines.text.toString().trim { it <= ' ' })
|
||||||
.put(Pref.spCardDescriptionLength, etCardDescriptionLength.text.toString().trim { it <= ' ' })
|
.put(
|
||||||
|
Pref.spCardDescriptionLength,
|
||||||
|
etCardDescriptionLength.text.toString().trim { it <= ' ' })
|
||||||
.put(Pref.spAvatarIconSize, etAvatarIconSize.text.toString().trim { it <= ' ' })
|
.put(Pref.spAvatarIconSize, etAvatarIconSize.text.toString().trim { it <= ' ' })
|
||||||
.put(
|
.put(
|
||||||
Pref.spNotificationTlIconSize,
|
Pref.spNotificationTlIconSize,
|
||||||
|
@ -525,12 +574,11 @@ class ActAppSetting : AppCompatActivity()
|
||||||
etPullNotificationCheckInterval.text.toString().trim { it <= ' ' })
|
etPullNotificationCheckInterval.text.toString().trim { it <= ' ' })
|
||||||
.put(Pref.spMediaSizeMax, etMediaSizeMax.text.toString().trim { it <= ' ' })
|
.put(Pref.spMediaSizeMax, etMediaSizeMax.text.toString().trim { it <= ' ' })
|
||||||
.put(Pref.spMovieSizeMax, etMovieSizeMax.text.toString().trim { it <= ' ' })
|
.put(Pref.spMovieSizeMax, etMovieSizeMax.text.toString().trim { it <= ' ' })
|
||||||
|
|
||||||
.put(Pref.spRoundRatio, etRoundRatio.text.toString().trim { it <= ' ' })
|
.put(Pref.spRoundRatio, etRoundRatio.text.toString().trim { it <= ' ' })
|
||||||
.put(Pref.spBoostAlpha, etBoostAlpha.text.toString().trim { it <= ' ' })
|
.put(Pref.spBoostAlpha, etBoostAlpha.text.toString().trim { it <= ' ' })
|
||||||
|
|
||||||
.put(Pref.spMediaReadTimeout, etMediaReadTimeout.text.toString().trim { it <= ' ' })
|
.put(Pref.spMediaReadTimeout, etMediaReadTimeout.text.toString().trim { it <= ' ' })
|
||||||
|
|
||||||
|
|
||||||
.put(Pref.spTimelineFont, timeline_font ?: "")
|
.put(Pref.spTimelineFont, timeline_font ?: "")
|
||||||
.put(Pref.spTimelineFontBold, timeline_font_bold ?: "")
|
.put(Pref.spTimelineFontBold, timeline_font_bold ?: "")
|
||||||
|
@ -548,7 +596,7 @@ class ActAppSetting : AppCompatActivity()
|
||||||
.put(Pref.ipFooterTabDividerColor, footer_tab_divider_color)
|
.put(Pref.ipFooterTabDividerColor, footer_tab_divider_color)
|
||||||
.put(Pref.ipFooterTabIndicatorColor, footer_tab_indicator_color)
|
.put(Pref.ipFooterTabIndicatorColor, footer_tab_indicator_color)
|
||||||
.put(Pref.ipListDividerColor, list_divider_color)
|
.put(Pref.ipListDividerColor, list_divider_color)
|
||||||
|
|
||||||
.put(Pref.ipTootColorUnlisted, toot_color_unlisted)
|
.put(Pref.ipTootColorUnlisted, toot_color_unlisted)
|
||||||
.put(Pref.ipTootColorFollower, toot_color_follower)
|
.put(Pref.ipTootColorFollower, toot_color_follower)
|
||||||
.put(Pref.ipTootColorDirectUser, toot_color_direct_user)
|
.put(Pref.ipTootColorDirectUser, toot_color_direct_user)
|
||||||
|
@ -556,9 +604,16 @@ class ActAppSetting : AppCompatActivity()
|
||||||
|
|
||||||
.put(Pref.ipLinkColor, link_color)
|
.put(Pref.ipLinkColor, link_color)
|
||||||
|
|
||||||
|
.put(Pref.ipCcdHeaderBg, color_column_header_bg)
|
||||||
|
.put(Pref.ipCcdHeaderFg, color_column_header_fg)
|
||||||
|
.put(Pref.ipCcdContentBg, color_column_bg)
|
||||||
|
.put(Pref.ipCcdContentAcct, color_column_acct)
|
||||||
|
.put(Pref.ipCcdContentText, color_column_text)
|
||||||
|
|
||||||
.apply()
|
.apply()
|
||||||
|
|
||||||
showUserAgentError()
|
showUserAgentError()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showUserAgentError() {
|
private fun showUserAgentError() {
|
||||||
|
@ -569,6 +624,53 @@ class ActAppSetting : AppCompatActivity()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showColumnHeaderSample() {
|
||||||
|
val header_bg = when {
|
||||||
|
color_column_header_bg != 0 -> color_column_header_bg
|
||||||
|
else -> Styler.getAttributeColor(this, R.attr.color_column_header)
|
||||||
|
}
|
||||||
|
|
||||||
|
val header_fg = when {
|
||||||
|
color_column_header_fg != 0 -> color_column_header_fg
|
||||||
|
else -> Styler.getAttributeColor(this, R.attr.colorColumnHeaderName)
|
||||||
|
}
|
||||||
|
|
||||||
|
ViewCompat.setBackground(
|
||||||
|
llColumnHeader,
|
||||||
|
Styler.getAdaptiveRippleDrawable(header_bg, header_fg)
|
||||||
|
)
|
||||||
|
|
||||||
|
tvColumnName.textColor = header_fg
|
||||||
|
Styler.setIconAttr(
|
||||||
|
this,
|
||||||
|
ivColumnHeader,
|
||||||
|
R.attr.btn_federate_tl,
|
||||||
|
color = header_fg
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showColumnSample() {
|
||||||
|
|
||||||
|
var c = when {
|
||||||
|
color_column_bg != 0 -> color_column_bg
|
||||||
|
else -> 0
|
||||||
|
}
|
||||||
|
flColumnBackground.setBackgroundColor(c)
|
||||||
|
|
||||||
|
c = when {
|
||||||
|
color_column_acct != 0 -> color_column_acct
|
||||||
|
else -> Styler.getAttributeColor(this, R.attr.colorTimeSmall)
|
||||||
|
}
|
||||||
|
tvSampleAcct.setTextColor(c)
|
||||||
|
|
||||||
|
c = when {
|
||||||
|
color_column_text != 0 -> color_column_text
|
||||||
|
else -> Styler.getAttributeColor(this, R.attr.colorContentText)
|
||||||
|
}
|
||||||
|
tvSampleContent.setTextColor(c)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCheckedChanged(buttonView : CompoundButton, isChecked : Boolean) {
|
override fun onCheckedChanged(buttonView : CompoundButton, isChecked : Boolean) {
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
}
|
}
|
||||||
|
@ -649,46 +751,50 @@ class ActAppSetting : AppCompatActivity()
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
R.id.btnListDividerColorReset -> {
|
||||||
|
list_divider_color = 0
|
||||||
|
saveUIToData()
|
||||||
|
}
|
||||||
|
|
||||||
R.id.btnBackgroundColorUnlistedEdit -> openColorPicker(
|
R.id.btnBackgroundColorUnlistedEdit -> openColorPicker(
|
||||||
COLOR_DIALOG_ID_TOOT_BG_UNLISTED,
|
COLOR_DIALOG_ID_TOOT_BG_UNLISTED,
|
||||||
toot_color_unlisted,
|
toot_color_unlisted,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
R.id.btnBackgroundColorUnlistedReset -> {
|
||||||
|
toot_color_unlisted = 0
|
||||||
|
saveUIToData()
|
||||||
|
}
|
||||||
|
|
||||||
R.id.btnBackgroundColorFollowerEdit -> openColorPicker(
|
R.id.btnBackgroundColorFollowerEdit -> openColorPicker(
|
||||||
COLOR_DIALOG_ID_TOOT_BG_FOLLOWER,
|
COLOR_DIALOG_ID_TOOT_BG_FOLLOWER,
|
||||||
toot_color_follower,
|
toot_color_follower,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
R.id.btnBackgroundColorFollowerReset -> {
|
||||||
|
toot_color_follower = 0
|
||||||
|
saveUIToData()
|
||||||
|
}
|
||||||
|
|
||||||
R.id.btnBackgroundColorDirectWithUserEdit -> openColorPicker(
|
R.id.btnBackgroundColorDirectWithUserEdit -> openColorPicker(
|
||||||
COLOR_DIALOG_ID_TOOT_BG_DIRECT_USER,
|
COLOR_DIALOG_ID_TOOT_BG_DIRECT_USER,
|
||||||
toot_color_direct_user,
|
toot_color_direct_user,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
R.id.btnBackgroundColorDirectWithUserReset -> {
|
||||||
|
toot_color_direct_user = 0
|
||||||
|
saveUIToData()
|
||||||
|
}
|
||||||
|
|
||||||
R.id.btnBackgroundColorDirectNoUserEdit -> openColorPicker(
|
R.id.btnBackgroundColorDirectNoUserEdit -> openColorPicker(
|
||||||
COLOR_DIALOG_ID_TOOT_BG_DIRECT_ME,
|
COLOR_DIALOG_ID_TOOT_BG_DIRECT_ME,
|
||||||
toot_color_direct_me,
|
toot_color_direct_me,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
R.id.btnListDividerColorReset -> {
|
|
||||||
list_divider_color = 0
|
|
||||||
saveUIToData()
|
|
||||||
}
|
|
||||||
R.id.btnBackgroundColorUnlistedReset -> {
|
|
||||||
toot_color_unlisted = 0
|
|
||||||
saveUIToData()
|
|
||||||
}
|
|
||||||
R.id.btnBackgroundColorFollowerReset -> {
|
|
||||||
toot_color_follower = 0
|
|
||||||
saveUIToData()
|
|
||||||
}
|
|
||||||
R.id.btnBackgroundColorDirectWithUserReset -> {
|
|
||||||
toot_color_direct_user = 0
|
|
||||||
saveUIToData()
|
|
||||||
}
|
|
||||||
R.id.btnBackgroundColorDirectNoUserReset -> {
|
R.id.btnBackgroundColorDirectNoUserReset -> {
|
||||||
toot_color_direct_me = 0
|
toot_color_direct_me = 0
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
|
@ -699,11 +805,72 @@ class ActAppSetting : AppCompatActivity()
|
||||||
link_color,
|
link_color,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
R.id.btnLinkColorReset -> {
|
R.id.btnLinkColorReset -> {
|
||||||
link_color = 0
|
link_color = 0
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
R.id.btnCcdHeaderBackgroundEdit -> openColorPicker(
|
||||||
|
COLOR_DIALOG_ID_COLUMN_HEADER_BG,
|
||||||
|
color_column_header_bg,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
R.id.btnCcdHeaderBackgroundReset -> {
|
||||||
|
color_column_header_bg = 0
|
||||||
|
saveUIToData()
|
||||||
|
showColumnHeaderSample()
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.btnCcdHeaderForegroundEdit -> openColorPicker(
|
||||||
|
COLOR_DIALOG_ID_COLUMN_HEADER_FG,
|
||||||
|
color_column_header_fg,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
R.id.btnCcdHeaderForegroundReset -> {
|
||||||
|
color_column_header_fg = 0
|
||||||
|
saveUIToData()
|
||||||
|
showColumnHeaderSample()
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.btnCcdContentBackgroundEdit -> openColorPicker(
|
||||||
|
COLOR_DIALOG_ID_COLUMN_BG,
|
||||||
|
color_column_bg,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
R.id.btnCcdContentBackgroundReset -> {
|
||||||
|
color_column_bg = 0
|
||||||
|
saveUIToData()
|
||||||
|
showColumnSample()
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.btnCcdContentAcctEdit -> openColorPicker(
|
||||||
|
COLOR_DIALOG_ID_COLUMN_ACCT,
|
||||||
|
color_column_acct,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
R.id.btnCcdContentAcctReset -> {
|
||||||
|
color_column_acct = 0
|
||||||
|
saveUIToData()
|
||||||
|
showColumnSample()
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.btnCcdContentTextEdit -> openColorPicker(
|
||||||
|
COLOR_DIALOG_ID_COLUMN_TEXT,
|
||||||
|
color_column_text,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
R.id.btnCcdContentTextReset -> {
|
||||||
|
color_column_text = 0
|
||||||
|
saveUIToData()
|
||||||
|
showColumnSample()
|
||||||
|
}
|
||||||
|
|
||||||
R.id.btnTimelineFontReset -> {
|
R.id.btnTimelineFontReset -> {
|
||||||
timeline_font = ""
|
timeline_font = ""
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
|
@ -751,7 +918,7 @@ class ActAppSetting : AppCompatActivity()
|
||||||
|
|
||||||
override fun onActivityResult(requestCode : Int, resultCode : Int, data : Intent?) {
|
override fun onActivityResult(requestCode : Int, resultCode : Int, data : Intent?) {
|
||||||
if(resultCode == RESULT_OK && data != null && requestCode == REQUEST_CODE_TIMELINE_FONT) {
|
if(resultCode == RESULT_OK && data != null && requestCode == REQUEST_CODE_TIMELINE_FONT) {
|
||||||
data.handleGetContentResult(contentResolver).firstOrNull()?.first?.let{ uri->
|
data.handleGetContentResult(contentResolver).firstOrNull()?.first?.let { uri ->
|
||||||
val file = saveTimelineFont(uri, "TimelineFont")
|
val file = saveTimelineFont(uri, "TimelineFont")
|
||||||
if(file != null) {
|
if(file != null) {
|
||||||
timeline_font = file.absolutePath
|
timeline_font = file.absolutePath
|
||||||
|
@ -760,7 +927,7 @@ class ActAppSetting : AppCompatActivity()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(resultCode == RESULT_OK && data != null && requestCode == REQUEST_CODE_TIMELINE_FONT_BOLD) {
|
} else if(resultCode == RESULT_OK && data != null && requestCode == REQUEST_CODE_TIMELINE_FONT_BOLD) {
|
||||||
data.handleGetContentResult(contentResolver).firstOrNull()?.first?.let{ uri->
|
data.handleGetContentResult(contentResolver).firstOrNull()?.first?.let { uri ->
|
||||||
val file = saveTimelineFont(uri, "TimelineFontBold")
|
val file = saveTimelineFont(uri, "TimelineFontBold")
|
||||||
if(file != null) {
|
if(file != null) {
|
||||||
timeline_font_bold = file.absolutePath
|
timeline_font_bold = file.absolutePath
|
||||||
|
@ -769,7 +936,7 @@ class ActAppSetting : AppCompatActivity()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(resultCode == RESULT_OK && data != null && requestCode == REQUEST_CODE_APP_DATA_IMPORT) {
|
} else if(resultCode == RESULT_OK && data != null && requestCode == REQUEST_CODE_APP_DATA_IMPORT) {
|
||||||
data.handleGetContentResult(contentResolver).firstOrNull()?.first?.let{ uri->
|
data.handleGetContentResult(contentResolver).firstOrNull()?.first?.let { uri ->
|
||||||
contentResolver.takePersistableUriPermission(
|
contentResolver.takePersistableUriPermission(
|
||||||
uri,
|
uri,
|
||||||
Intent.FLAG_GRANT_READ_URI_PERMISSION
|
Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||||
|
@ -791,63 +958,99 @@ class ActAppSetting : AppCompatActivity()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onColorSelected(dialogId : Int, @ColorInt colorSelected : Int) {
|
override fun onColorSelected(dialogId : Int, @ColorInt colorSelected : Int) {
|
||||||
|
val colorOpaque = colorFF000000 or colorSelected
|
||||||
|
val colorAlpha = if(colorSelected == 0) 0x01000000 else colorSelected
|
||||||
when(dialogId) {
|
when(dialogId) {
|
||||||
|
|
||||||
COLOR_DIALOG_ID_FOOTER_BUTTON_BG -> {
|
COLOR_DIALOG_ID_FOOTER_BUTTON_BG -> {
|
||||||
footer_button_bg_color = colorFF000000 or colorSelected
|
footer_button_bg_color = colorOpaque
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
showFooterColor()
|
showFooterColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR_DIALOG_ID_FOOTER_BUTTON_FG -> {
|
COLOR_DIALOG_ID_FOOTER_BUTTON_FG -> {
|
||||||
footer_button_fg_color = colorFF000000 or colorSelected
|
footer_button_fg_color = colorOpaque
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
showFooterColor()
|
showFooterColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR_DIALOG_ID_FOOTER_TAB_BG -> {
|
COLOR_DIALOG_ID_FOOTER_TAB_BG -> {
|
||||||
footer_tab_bg_color = colorFF000000 or colorSelected
|
footer_tab_bg_color = colorOpaque
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
showFooterColor()
|
showFooterColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR_DIALOG_ID_FOOTER_TAB_DIVIDER -> {
|
COLOR_DIALOG_ID_FOOTER_TAB_DIVIDER -> {
|
||||||
footer_tab_divider_color = colorFF000000 or colorSelected
|
footer_tab_divider_color = colorOpaque
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
showFooterColor()
|
showFooterColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR_DIALOG_ID_FOOTER_TAB_INDICATOR -> {
|
COLOR_DIALOG_ID_FOOTER_TAB_INDICATOR -> {
|
||||||
footer_tab_indicator_color = if(colorSelected == 0) 0x01000000 else colorSelected
|
footer_tab_indicator_color = colorAlpha
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
showFooterColor()
|
showFooterColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR_DIALOG_ID_LIST_DIVIDER -> {
|
COLOR_DIALOG_ID_LIST_DIVIDER -> {
|
||||||
list_divider_color = if(colorSelected == 0) 0x01000000 else colorSelected
|
list_divider_color = colorAlpha
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR_DIALOG_ID_TOOT_BG_UNLISTED -> {
|
COLOR_DIALOG_ID_TOOT_BG_UNLISTED -> {
|
||||||
toot_color_unlisted = if(colorSelected == 0) 0x01000000 else colorSelected
|
toot_color_unlisted = colorAlpha
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR_DIALOG_ID_TOOT_BG_FOLLOWER -> {
|
COLOR_DIALOG_ID_TOOT_BG_FOLLOWER -> {
|
||||||
toot_color_follower = if(colorSelected == 0) 0x01000000 else colorSelected
|
toot_color_follower = colorAlpha
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR_DIALOG_ID_TOOT_BG_DIRECT_USER -> {
|
COLOR_DIALOG_ID_TOOT_BG_DIRECT_USER -> {
|
||||||
toot_color_direct_user= if(colorSelected == 0) 0x01000000 else colorSelected
|
toot_color_direct_user = colorAlpha
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR_DIALOG_ID_TOOT_BG_DIRECT_ME -> {
|
COLOR_DIALOG_ID_TOOT_BG_DIRECT_ME -> {
|
||||||
toot_color_direct_me = if(colorSelected == 0) 0x01000000 else colorSelected
|
toot_color_direct_me = colorAlpha
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
}
|
}
|
||||||
COLOR_DIALOG_ID_LINK ->{
|
|
||||||
link_color = if(colorSelected == 0) 0x01000000 else colorSelected
|
COLOR_DIALOG_ID_LINK -> {
|
||||||
|
link_color = colorAlpha
|
||||||
saveUIToData()
|
saveUIToData()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
COLOR_DIALOG_ID_COLUMN_HEADER_BG -> {
|
||||||
|
color_column_header_bg = colorOpaque
|
||||||
|
saveUIToData()
|
||||||
|
showColumnHeaderSample()
|
||||||
|
}
|
||||||
|
|
||||||
|
COLOR_DIALOG_ID_COLUMN_HEADER_FG -> {
|
||||||
|
color_column_header_fg = colorOpaque
|
||||||
|
saveUIToData()
|
||||||
|
showColumnHeaderSample()
|
||||||
|
}
|
||||||
|
|
||||||
|
COLOR_DIALOG_ID_COLUMN_BG -> {
|
||||||
|
color_column_bg = colorOpaque
|
||||||
|
saveUIToData()
|
||||||
|
showColumnSample()
|
||||||
|
}
|
||||||
|
|
||||||
|
COLOR_DIALOG_ID_COLUMN_ACCT -> {
|
||||||
|
color_column_acct = colorAlpha
|
||||||
|
saveUIToData()
|
||||||
|
showColumnSample()
|
||||||
|
}
|
||||||
|
|
||||||
|
COLOR_DIALOG_ID_COLUMN_TEXT -> {
|
||||||
|
color_column_text = colorAlpha
|
||||||
|
saveUIToData()
|
||||||
|
showColumnSample()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -873,8 +1076,8 @@ class ActAppSetting : AppCompatActivity()
|
||||||
Styler.setIconAttr(this, ivFooterToot, R.attr.ic_edit)
|
Styler.setIconAttr(this, ivFooterToot, R.attr.ic_edit)
|
||||||
Styler.setIconAttr(this, ivFooterMenu, R.attr.ic_hamburger)
|
Styler.setIconAttr(this, ivFooterMenu, R.attr.ic_hamburger)
|
||||||
} else {
|
} else {
|
||||||
Styler.setIconAttr(this, ivFooterToot, R.attr.ic_edit,color=c)
|
Styler.setIconAttr(this, ivFooterToot, R.attr.ic_edit, color = c)
|
||||||
Styler.setIconAttr(this, ivFooterMenu, R.attr.ic_hamburger,color=c)
|
Styler.setIconAttr(this, ivFooterMenu, R.attr.ic_hamburger, color = c)
|
||||||
}
|
}
|
||||||
|
|
||||||
c = footer_tab_bg_color
|
c = footer_tab_bg_color
|
||||||
|
@ -1072,7 +1275,7 @@ class ActAppSetting : AppCompatActivity()
|
||||||
)
|
)
|
||||||
|
|
||||||
// ZipOutputStreamオブジェクトの作成
|
// ZipOutputStreamオブジェクトの作成
|
||||||
ZipOutputStream(FileOutputStream(file)).use{ zipStream->
|
ZipOutputStream(FileOutputStream(file)).use { zipStream ->
|
||||||
|
|
||||||
// アプリデータjson
|
// アプリデータjson
|
||||||
zipStream.putNextEntry(ZipEntry("AppData.json"))
|
zipStream.putNextEntry(ZipEntry("AppData.json"))
|
||||||
|
@ -1080,17 +1283,21 @@ class ActAppSetting : AppCompatActivity()
|
||||||
val jw = JsonWriter(OutputStreamWriter(zipStream, "UTF-8"))
|
val jw = JsonWriter(OutputStreamWriter(zipStream, "UTF-8"))
|
||||||
AppDataExporter.encodeAppData(this@ActAppSetting, jw)
|
AppDataExporter.encodeAppData(this@ActAppSetting, jw)
|
||||||
jw.flush()
|
jw.flush()
|
||||||
}finally{
|
} finally {
|
||||||
zipStream.closeEntry()
|
zipStream.closeEntry()
|
||||||
}
|
}
|
||||||
|
|
||||||
// カラム背景画像
|
// カラム背景画像
|
||||||
val appState = App1.getAppState(this@ActAppSetting)
|
val appState = App1.getAppState(this@ActAppSetting)
|
||||||
for(column in appState.column_list) {
|
for(column in appState.column_list) {
|
||||||
AppDataExporter.saveBackgroundImage(this@ActAppSetting,zipStream,column)
|
AppDataExporter.saveBackgroundImage(
|
||||||
|
this@ActAppSetting,
|
||||||
|
zipStream,
|
||||||
|
column
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return file
|
return file
|
||||||
} catch(ex : Throwable) {
|
} catch(ex : Throwable) {
|
||||||
log.trace(ex)
|
log.trace(ex)
|
||||||
|
|
|
@ -119,7 +119,7 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke
|
||||||
.setAllowPresets(true)
|
.setAllowPresets(true)
|
||||||
.setShowAlphaSlider(false)
|
.setShowAlphaSlider(false)
|
||||||
.setDialogId(COLOR_DIALOG_ID_HEADER_BACKGROUND)
|
.setDialogId(COLOR_DIALOG_ID_HEADER_BACKGROUND)
|
||||||
.setColor(column.getHeaderBackgroundColor(this))
|
.setColor(column.getHeaderBackgroundColor())
|
||||||
.show(this)
|
.show(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke
|
||||||
.setAllowPresets(true)
|
.setAllowPresets(true)
|
||||||
.setShowAlphaSlider(false)
|
.setShowAlphaSlider(false)
|
||||||
.setDialogId(COLOR_DIALOG_ID_HEADER_FOREGROUND)
|
.setDialogId(COLOR_DIALOG_ID_HEADER_FOREGROUND)
|
||||||
.setColor(column.getHeaderNameColor(this))
|
.setColor(column.getHeaderNameColor())
|
||||||
.show(this)
|
.show(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke
|
||||||
.setAllowPresets(true)
|
.setAllowPresets(true)
|
||||||
.setShowAlphaSlider(true)
|
.setShowAlphaSlider(true)
|
||||||
.setDialogId(COLOR_DIALOG_ID_ACCT_TEXT)
|
.setDialogId(COLOR_DIALOG_ID_ACCT_TEXT)
|
||||||
.setColor(column.getAcctColor(this))
|
.setColor(column.getAcctColor())
|
||||||
.show(this)
|
.show(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke
|
||||||
.setAllowPresets(true)
|
.setAllowPresets(true)
|
||||||
.setShowAlphaSlider(true)
|
.setShowAlphaSlider(true)
|
||||||
.setDialogId(COLOR_DIALOG_ID_CONTENT_TEXT)
|
.setDialogId(COLOR_DIALOG_ID_CONTENT_TEXT)
|
||||||
.setColor(column.getContentColor(this))
|
.setColor(column.getContentColor())
|
||||||
.show(this)
|
.show(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -391,11 +391,9 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke
|
||||||
try {
|
try {
|
||||||
loading_busy = true
|
loading_busy = true
|
||||||
|
|
||||||
column.setHeaderBackground(this,llColumnHeader)
|
column.setHeaderBackground(llColumnHeader)
|
||||||
|
|
||||||
|
val c = column.getHeaderNameColor()
|
||||||
|
|
||||||
var c = column.getHeaderNameColor(this)
|
|
||||||
tvColumnName.textColor = c
|
tvColumnName.textColor = c
|
||||||
Styler.setIconAttr(
|
Styler.setIconAttr(
|
||||||
this,
|
this,
|
||||||
|
@ -430,8 +428,8 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke
|
||||||
|
|
||||||
loadImage(ivColumnBackground, column.column_bg_image)
|
loadImage(ivColumnBackground, column.column_bg_image)
|
||||||
|
|
||||||
tvSampleAcct.setTextColor( column.getAcctColor(this))
|
tvSampleAcct.setTextColor( column.getAcctColor())
|
||||||
tvSampleContent.setTextColor(column.getContentColor(this))
|
tvSampleContent.setTextColor(column.getContentColor())
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
loading_busy = false
|
loading_busy = false
|
||||||
|
|
|
@ -200,7 +200,7 @@ class ActMain : AppCompatActivity()
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
internal val link_click_listener : MyClickableSpanClickCallback = { viewClicked, span ->
|
private val link_click_listener : MyClickableSpanClickCallback = { viewClicked, span ->
|
||||||
|
|
||||||
var view = viewClicked
|
var view = viewClicked
|
||||||
var column : Column? = null
|
var column : Column? = null
|
||||||
|
@ -437,6 +437,7 @@ class ActMain : AppCompatActivity()
|
||||||
super.onNewIntent(intent)
|
super.onNewIntent(intent)
|
||||||
log.w("onNewIntent: isResumed = isResumed")
|
log.w("onNewIntent: isResumed = isResumed")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSaveInstanceState(outState : Bundle?) {
|
override fun onSaveInstanceState(outState : Bundle?) {
|
||||||
log.d("onSaveInstanceState")
|
log.d("onSaveInstanceState")
|
||||||
super.onSaveInstanceState(outState)
|
super.onSaveInstanceState(outState)
|
||||||
|
@ -637,9 +638,9 @@ class ActMain : AppCompatActivity()
|
||||||
|
|
||||||
private fun handleSentIntent(intent : Intent) {
|
private fun handleSentIntent(intent : Intent) {
|
||||||
sent_intent2 = intent
|
sent_intent2 = intent
|
||||||
|
|
||||||
// Galaxy S8+ で STのSSを取った後に出るポップアップからそのまま共有でSTを選ぶと何も起きない問題への対策
|
// Galaxy S8+ で STのSSを取った後に出るポップアップからそのまま共有でSTを選ぶと何も起きない問題への対策
|
||||||
handler.post{
|
handler.post {
|
||||||
AccountPicker.pick(
|
AccountPicker.pick(
|
||||||
this,
|
this,
|
||||||
bAllowPseudo = false,
|
bAllowPseudo = false,
|
||||||
|
@ -775,6 +776,11 @@ class ActMain : AppCompatActivity()
|
||||||
|
|
||||||
override fun onActivityResult(requestCode : Int, resultCode : Int, data : Intent?) {
|
override fun onActivityResult(requestCode : Int, resultCode : Int, data : Intent?) {
|
||||||
log.d("onActivityResult")
|
log.d("onActivityResult")
|
||||||
|
|
||||||
|
if(requestCode == REQUEST_CODE_APP_SETTING) {
|
||||||
|
Column.reloadDefaultColor(this,pref)
|
||||||
|
}
|
||||||
|
|
||||||
if(resultCode == Activity.RESULT_OK) {
|
if(resultCode == Activity.RESULT_OK) {
|
||||||
if(requestCode == REQUEST_CODE_COLUMN_LIST) {
|
if(requestCode == REQUEST_CODE_COLUMN_LIST) {
|
||||||
if(data != null) {
|
if(data != null) {
|
||||||
|
@ -1159,6 +1165,8 @@ class ActMain : AppCompatActivity()
|
||||||
|
|
||||||
MyClickableSpan.defaultLinkColor = Pref.ipLinkColor(pref)
|
MyClickableSpan.defaultLinkColor = Pref.ipLinkColor(pref)
|
||||||
|
|
||||||
|
Column.reloadDefaultColor(this,pref)
|
||||||
|
|
||||||
var sv = Pref.spTimelineFont(pref)
|
var sv = Pref.spTimelineFont(pref)
|
||||||
if(sv.isNotEmpty()) {
|
if(sv.isNotEmpty()) {
|
||||||
try {
|
try {
|
||||||
|
@ -1223,13 +1231,13 @@ class ActMain : AppCompatActivity()
|
||||||
}
|
}
|
||||||
|
|
||||||
run {
|
run {
|
||||||
var boost_alpha :Float? = 0.8f
|
var boost_alpha : Float? = 0.8f
|
||||||
try{
|
try {
|
||||||
val f = ( Pref.spBoostAlpha.toInt(pref).toFloat() +0.5f )/100f
|
val f = (Pref.spBoostAlpha.toInt(pref).toFloat() + 0.5f) / 100f
|
||||||
boost_alpha = when{
|
boost_alpha = when {
|
||||||
f >= 1f -> null
|
f >= 1f -> null
|
||||||
f < 0f -> 0.66f
|
f < 0f -> 0.66f
|
||||||
else-> f
|
else -> f
|
||||||
}
|
}
|
||||||
} catch(ex : Throwable) {
|
} catch(ex : Throwable) {
|
||||||
log.trace(ex)
|
log.trace(ex)
|
||||||
|
@ -1429,11 +1437,14 @@ class ActMain : AppCompatActivity()
|
||||||
viewRoot.contentDescription = column.getColumnName(true)
|
viewRoot.contentDescription = column.getColumnName(true)
|
||||||
//
|
//
|
||||||
|
|
||||||
column.setHeaderBackground(this,viewRoot)
|
column.setHeaderBackground( viewRoot)
|
||||||
|
|
||||||
|
Styler.setIconAttr(
|
||||||
var c = column.getHeaderNameColor(this)
|
this,
|
||||||
Styler.setIconAttr(this, ivIcon, column.getIconAttrId(column.column_type), c)
|
ivIcon,
|
||||||
|
column.getIconAttrId(column.column_type),
|
||||||
|
column.getHeaderNameColor()
|
||||||
|
)
|
||||||
|
|
||||||
//
|
//
|
||||||
val ac = AcctColor.load(column.access_info.acct)
|
val ac = AcctColor.load(column.access_info.acct)
|
||||||
|
@ -2260,16 +2271,17 @@ class ActMain : AppCompatActivity()
|
||||||
val footer_tab_bg_color = Pref.ipFooterTabBgColor(pref)
|
val footer_tab_bg_color = Pref.ipFooterTabBgColor(pref)
|
||||||
val footer_tab_divider_color = Pref.ipFooterTabDividerColor(pref)
|
val footer_tab_divider_color = Pref.ipFooterTabDividerColor(pref)
|
||||||
val footer_tab_indicator_color = Pref.ipFooterTabIndicatorColor(pref)
|
val footer_tab_indicator_color = Pref.ipFooterTabIndicatorColor(pref)
|
||||||
|
|
||||||
var c = footer_button_bg_color
|
var c = footer_button_bg_color
|
||||||
if(c == 0) {
|
if(c == 0) {
|
||||||
btnMenu.setBackgroundResource(R.drawable.bg_button_cw)
|
btnMenu.setBackgroundResource(R.drawable.bg_button_cw)
|
||||||
btnToot.setBackgroundResource(R.drawable.bg_button_cw)
|
btnToot.setBackgroundResource(R.drawable.bg_button_cw)
|
||||||
btnQuickToot.setBackgroundResource(R.drawable.bg_button_cw)
|
btnQuickToot.setBackgroundResource(R.drawable.bg_button_cw)
|
||||||
} else {
|
} else {
|
||||||
val fg = if(footer_button_fg_color != 0)
|
val fg = when {
|
||||||
footer_button_fg_color
|
footer_button_fg_color != 0 -> footer_button_fg_color
|
||||||
else
|
else -> Styler.getAttributeColor(this, R.attr.colorRippleEffect)
|
||||||
Styler.getAttributeColor(this, R.attr.colorRippleEffect)
|
}
|
||||||
ViewCompat.setBackground(btnToot, Styler.getAdaptiveRippleDrawable(c, fg))
|
ViewCompat.setBackground(btnToot, Styler.getAdaptiveRippleDrawable(c, fg))
|
||||||
ViewCompat.setBackground(btnMenu, Styler.getAdaptiveRippleDrawable(c, fg))
|
ViewCompat.setBackground(btnMenu, Styler.getAdaptiveRippleDrawable(c, fg))
|
||||||
ViewCompat.setBackground(btnQuickToot, Styler.getAdaptiveRippleDrawable(c, fg))
|
ViewCompat.setBackground(btnQuickToot, Styler.getAdaptiveRippleDrawable(c, fg))
|
||||||
|
@ -2287,47 +2299,14 @@ class ActMain : AppCompatActivity()
|
||||||
}
|
}
|
||||||
|
|
||||||
c = footer_tab_bg_color
|
c = footer_tab_bg_color
|
||||||
if(c == 0) {
|
if(c == 0) c = Styler.getAttributeColor(this, R.attr.colorColumnStripBackground)
|
||||||
svColumnStrip.setBackgroundColor(
|
svColumnStrip.setBackgroundColor(c)
|
||||||
Styler.getAttributeColor(
|
llQuickTootBar.setBackgroundColor(c)
|
||||||
this,
|
|
||||||
R.attr.colorColumnStripBackground
|
|
||||||
)
|
|
||||||
)
|
|
||||||
llQuickTootBar.setBackgroundColor(
|
|
||||||
Styler.getAttributeColor(
|
|
||||||
this,
|
|
||||||
R.attr.colorColumnStripBackground
|
|
||||||
)
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
svColumnStrip.setBackgroundColor(c)
|
|
||||||
svColumnStrip.setBackgroundColor(
|
|
||||||
Styler.getAttributeColor(
|
|
||||||
this,
|
|
||||||
R.attr.colorColumnStripBackground
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
c = footer_tab_divider_color
|
c = footer_tab_divider_color
|
||||||
if(c == 0) {
|
if(c == 0) c = Styler.getAttributeColor(this, R.attr.colorImageButton)
|
||||||
vFooterDivider1.setBackgroundColor(
|
vFooterDivider1.setBackgroundColor(c)
|
||||||
Styler.getAttributeColor(
|
vFooterDivider2.setBackgroundColor(c)
|
||||||
this,
|
|
||||||
R.attr.colorImageButton
|
|
||||||
)
|
|
||||||
)
|
|
||||||
vFooterDivider2.setBackgroundColor(
|
|
||||||
Styler.getAttributeColor(
|
|
||||||
this,
|
|
||||||
R.attr.colorImageButton
|
|
||||||
)
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
vFooterDivider1.setBackgroundColor(c)
|
|
||||||
vFooterDivider2.setBackgroundColor(c)
|
|
||||||
}
|
|
||||||
|
|
||||||
llColumnStrip.indicatorColor = footer_tab_indicator_color
|
llColumnStrip.indicatorColor = footer_tab_indicator_color
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package jp.juggler.subwaytooter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.SharedPreferences
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.AsyncTask
|
import android.os.AsyncTask
|
||||||
import android.os.Environment
|
import android.os.Environment
|
||||||
|
@ -468,6 +469,42 @@ class Column(
|
||||||
log.i("backgroundDir: ${backgroundDir} exists=${backgroundDir.exists()}")
|
log.i("backgroundDir: ${backgroundDir} exists=${backgroundDir.exists()}")
|
||||||
return backgroundDir
|
return backgroundDir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var defaultColorHeaderBg = 0
|
||||||
|
private var defaultColorHeaderName = 0
|
||||||
|
private var defaultColorHeaderPageNumber = 0
|
||||||
|
private var defaultColorContentBg = 0
|
||||||
|
private var defaultColorContentAcct = 0
|
||||||
|
private var defaultColorContentText = 0
|
||||||
|
|
||||||
|
fun reloadDefaultColor(activity : AppCompatActivity, pref : SharedPreferences) {
|
||||||
|
var c : Int
|
||||||
|
|
||||||
|
//
|
||||||
|
c = Pref.ipCcdHeaderBg(pref)
|
||||||
|
if(c == 0) c = Styler.getAttributeColor(activity, R.attr.color_column_header)
|
||||||
|
defaultColorHeaderBg = c
|
||||||
|
//
|
||||||
|
c = Pref.ipCcdHeaderFg(pref)
|
||||||
|
if(c == 0) c = Styler.getAttributeColor(activity, R.attr.colorColumnHeaderName)
|
||||||
|
defaultColorHeaderName = c
|
||||||
|
//
|
||||||
|
c = Pref.ipCcdHeaderFg(pref)
|
||||||
|
if(c == 0) c = Styler.getAttributeColor(activity, R.attr.colorColumnHeaderPageNumber)
|
||||||
|
defaultColorHeaderPageNumber = c
|
||||||
|
//
|
||||||
|
c = Pref.ipCcdContentBg(pref)
|
||||||
|
defaultColorContentBg = c
|
||||||
|
//
|
||||||
|
c = Pref.ipCcdContentAcct(pref)
|
||||||
|
if(c == 0) c = Styler.getAttributeColor(activity, R.attr.colorTimeSmall)
|
||||||
|
defaultColorContentAcct = c
|
||||||
|
//
|
||||||
|
c = Pref.ipCcdContentText(pref)
|
||||||
|
if(c == 0) c = Styler.getAttributeColor(activity, R.attr.colorContentText)
|
||||||
|
defaultColorContentText = c
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private var callback_ref : WeakReference<Callback>? = null
|
private var callback_ref : WeakReference<Callback>? = null
|
||||||
|
@ -6822,53 +6859,41 @@ class Column(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getContentColor(activity : AppCompatActivity) : Int = if(content_color != 0) {
|
fun getContentColor() : Int = when {
|
||||||
content_color
|
content_color != 0 -> content_color
|
||||||
} else {
|
else -> defaultColorContentText
|
||||||
Styler.getAttributeColor(activity, R.attr.colorContentText)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getAcctColor(activity : AppCompatActivity) : Int = if(acct_color != 0) {
|
fun getAcctColor() : Int = when {
|
||||||
acct_color
|
acct_color != 0 -> acct_color
|
||||||
} else {
|
else -> defaultColorContentAcct
|
||||||
Styler.getAttributeColor(activity, R.attr.colorTimeSmall)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getHeaderPageNumberColor(activity : AppCompatActivity) : Int {
|
fun getHeaderPageNumberColor() = when {
|
||||||
val c = header_fg_color
|
header_fg_color != 0 -> header_fg_color
|
||||||
return when {
|
else -> defaultColorHeaderPageNumber
|
||||||
c != 0 -> c
|
|
||||||
else -> Styler.getAttributeColor(activity,R.attr.colorColumnHeaderPageNumber)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getHeaderNameColor(activity : AppCompatActivity) : Int {
|
fun getHeaderNameColor() = when {
|
||||||
val c = header_fg_color
|
header_fg_color != 0 -> header_fg_color
|
||||||
return when {
|
else -> defaultColorHeaderName
|
||||||
c != 0 -> c
|
|
||||||
else -> Styler.getAttributeColor(activity,R.attr.colorColumnHeaderName)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getHeaderBackgroundColor(activity : AppCompatActivity) : Int {
|
fun getHeaderBackgroundColor() = when {
|
||||||
val c = header_bg_color
|
header_bg_color != 0 -> header_bg_color
|
||||||
return when {
|
else -> defaultColorHeaderBg
|
||||||
c != 0 -> c
|
|
||||||
else -> Styler.getAttributeColor(activity,R.attr.color_column_header)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setHeaderBackground(activity : AppCompatActivity, view : View) {
|
fun setHeaderBackground( view : View) {
|
||||||
ViewCompat.setBackground(
|
ViewCompat.setBackground(
|
||||||
view,
|
view,
|
||||||
Styler.getAdaptiveRippleDrawable(
|
Styler.getAdaptiveRippleDrawable(
|
||||||
getHeaderBackgroundColor(activity),
|
getHeaderBackgroundColor(),
|
||||||
getHeaderNameColor(activity)
|
getHeaderNameColor()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// fun findListIndexByTimelineId(orderId : EntityId) : Int? {
|
// fun findListIndexByTimelineId(orderId : EntityId) : Int? {
|
||||||
// list_data.forEachIndexed { i, v ->
|
// list_data.forEachIndexed { i, v ->
|
||||||
// if(v.getOrderId() == orderId) return i
|
// if(v.getOrderId() == orderId) return i
|
||||||
|
|
|
@ -659,10 +659,10 @@ class ColumnViewHolder(
|
||||||
if(column == null || column.is_dispose.get()) return
|
if(column == null || column.is_dispose.get()) return
|
||||||
|
|
||||||
// カラムヘッダ背景
|
// カラムヘッダ背景
|
||||||
column.setHeaderBackground(activity,llColumnHeader)
|
column.setHeaderBackground(llColumnHeader)
|
||||||
|
|
||||||
// カラムヘッダ文字色(A)
|
// カラムヘッダ文字色(A)
|
||||||
var c = column.getHeaderNameColor(activity)
|
var c = column.getHeaderNameColor()
|
||||||
tvColumnName.textColor =c
|
tvColumnName.textColor =c
|
||||||
Styler.setIconAttr(
|
Styler.setIconAttr(
|
||||||
activity,
|
activity,
|
||||||
|
@ -675,7 +675,7 @@ class ColumnViewHolder(
|
||||||
Styler.setIconAttr(activity, btnColumnClose, R.attr.btn_close, c)
|
Styler.setIconAttr(activity, btnColumnClose, R.attr.btn_close, c)
|
||||||
|
|
||||||
// カラムヘッダ文字色(B)
|
// カラムヘッダ文字色(B)
|
||||||
c = column.getHeaderPageNumberColor(activity)
|
c = column.getHeaderPageNumberColor()
|
||||||
tvColumnIndex.textColor =c
|
tvColumnIndex.textColor =c
|
||||||
tvColumnStatus.textColor =c
|
tvColumnStatus.textColor =c
|
||||||
|
|
||||||
|
@ -692,7 +692,7 @@ class ColumnViewHolder(
|
||||||
loadBackgroundImage(ivColumnBackgroundImage, column.column_bg_image)
|
loadBackgroundImage(ivColumnBackgroundImage, column.column_bg_image)
|
||||||
|
|
||||||
// エラー表示
|
// エラー表示
|
||||||
tvLoading.textColor = column.getContentColor(activity)
|
tvLoading.textColor = column.getContentColor()
|
||||||
|
|
||||||
status_adapter?.findHeaderViewHolder(listView)?.showColor()
|
status_adapter?.findHeaderViewHolder(listView)?.showColor()
|
||||||
}
|
}
|
||||||
|
|
|
@ -399,7 +399,7 @@ internal class ItemViewHolder(
|
||||||
removeExtraView()
|
removeExtraView()
|
||||||
|
|
||||||
var c : Int
|
var c : Int
|
||||||
c = column.getContentColor(activity)
|
c = column.getContentColor()
|
||||||
this.content_color = c
|
this.content_color = c
|
||||||
|
|
||||||
tvBoosted.setTextColor(c)
|
tvBoosted.setTextColor(c)
|
||||||
|
@ -427,7 +427,7 @@ internal class ItemViewHolder(
|
||||||
it.color = rgb or (alpha shl 24)
|
it.color = rgb or (alpha shl 24)
|
||||||
}
|
}
|
||||||
|
|
||||||
c = column.getAcctColor(activity)
|
c = column.getAcctColor()
|
||||||
log.d("acct_color %x", c)
|
log.d("acct_color %x", c)
|
||||||
this.acct_color = c
|
this.acct_color = c
|
||||||
tvBoostedTime.setTextColor(c)
|
tvBoostedTime.setTextColor(c)
|
||||||
|
|
|
@ -387,6 +387,12 @@ object Pref {
|
||||||
val ipTootColorDirectUser = IntPref("ipTootColorDirectUser", 0)
|
val ipTootColorDirectUser = IntPref("ipTootColorDirectUser", 0)
|
||||||
val ipTootColorDirectMe = IntPref("ipTootColorDirectMe", 0)
|
val ipTootColorDirectMe = IntPref("ipTootColorDirectMe", 0)
|
||||||
|
|
||||||
|
val ipCcdHeaderBg = IntPref("ipCcdHeaderBg", 0)
|
||||||
|
val ipCcdHeaderFg = IntPref("ipCcdHeaderFg", 0)
|
||||||
|
val ipCcdContentBg = IntPref("ipCcdContentBg", 0)
|
||||||
|
val ipCcdContentAcct = IntPref("ipCcdContentAcct", 0)
|
||||||
|
val ipCcdContentText = IntPref("ipCcdContentText", 0)
|
||||||
|
|
||||||
// val ipTrendTagCountShowing = IntPref("TrendTagCountShowing", 0)
|
// val ipTrendTagCountShowing = IntPref("TrendTagCountShowing", 0)
|
||||||
// const val TTCS_WEEKLY = 0
|
// const val TTCS_WEEKLY = 0
|
||||||
// const val TTCS_DAILY = 1
|
// const val TTCS_DAILY = 1
|
||||||
|
|
|
@ -57,7 +57,7 @@ internal class StatusButtons(
|
||||||
private val ivFollowedBy2 = holder.ivFollowedBy2
|
private val ivFollowedBy2 = holder.ivFollowedBy2
|
||||||
private val btnMore = holder.btnMore
|
private val btnMore = holder.btnMore
|
||||||
|
|
||||||
private val color_normal = column.getContentColor(activity)
|
private val color_normal = column.getContentColor()
|
||||||
|
|
||||||
private val color_accent : Int
|
private val color_accent : Int
|
||||||
get() = Styler.getAttributeColor(activity, R.attr.colorImageButtonAccent)
|
get() = Styler.getAttributeColor(activity, R.attr.colorImageButtonAccent)
|
||||||
|
|
|
@ -3,13 +3,17 @@ package jp.juggler.subwaytooter
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
|
import android.graphics.ColorFilter
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
|
import android.graphics.PorterDuffColorFilter
|
||||||
import android.graphics.drawable.*
|
import android.graphics.drawable.*
|
||||||
import android.graphics.drawable.shapes.RectShape
|
import android.graphics.drawable.shapes.RectShape
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.os.SystemClock
|
||||||
import android.support.v4.content.ContextCompat
|
import android.support.v4.content.ContextCompat
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import android.text.Spanned
|
import android.text.Spanned
|
||||||
|
import android.util.SparseArray
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ImageButton
|
import android.widget.ImageButton
|
||||||
|
@ -59,40 +63,136 @@ object Styler {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
private class ColorFilterCacheValue(
|
||||||
|
val filter : ColorFilter,
|
||||||
|
var lastUsed : Long
|
||||||
|
)
|
||||||
|
|
||||||
|
private val colorFilterCache = SparseArray<ColorFilterCacheValue>()
|
||||||
|
private var colorFilterCacheLastSweep = 0L
|
||||||
|
|
||||||
|
private fun createColorFilter(rgb : Int) : ColorFilter? {
|
||||||
|
synchronized(colorFilterCache) {
|
||||||
|
val now = SystemClock.elapsedRealtime()
|
||||||
|
val cacheValue = colorFilterCache[rgb]
|
||||||
|
if(cacheValue != null) {
|
||||||
|
cacheValue.lastUsed = now
|
||||||
|
return cacheValue.filter
|
||||||
|
}
|
||||||
|
|
||||||
|
val size = colorFilterCache.size()
|
||||||
|
if(now - colorFilterCacheLastSweep >= 10000L && size >= 64) {
|
||||||
|
colorFilterCacheLastSweep = now
|
||||||
|
for(i in size - 1 downTo 0) {
|
||||||
|
val v = colorFilterCache.valueAt(i)
|
||||||
|
if(now - v.lastUsed >= 10000L) {
|
||||||
|
colorFilterCache.removeAt(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val f = PorterDuffColorFilter(rgb, PorterDuff.Mode.SRC_ATOP)
|
||||||
|
colorFilterCache.put(rgb, ColorFilterCacheValue(f, now))
|
||||||
|
return f
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
private class ColoredDrawableCacheKey(
|
||||||
|
val drawableId : Int,
|
||||||
|
val rgb : Int,
|
||||||
|
val alpha : Int
|
||||||
|
) {
|
||||||
|
|
||||||
|
override fun equals(other : Any?) : Boolean {
|
||||||
|
return this === other || (
|
||||||
|
other is ColoredDrawableCacheKey
|
||||||
|
&& drawableId == other.drawableId
|
||||||
|
&& rgb == other.rgb
|
||||||
|
&& alpha == other.alpha
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hashCode() : Int {
|
||||||
|
return drawableId xor (rgb or (alpha shl 24))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ColoredDrawableCacheValue(
|
||||||
|
val drawable : Drawable,
|
||||||
|
var lastUsed : Long
|
||||||
|
)
|
||||||
|
|
||||||
|
private val coloredDrawableCache = HashMap<ColoredDrawableCacheKey, ColoredDrawableCacheValue>()
|
||||||
|
private var coloredDrawableCacheLastSweep = 0L
|
||||||
|
|
||||||
fun createColoredDrawable(
|
fun createColoredDrawable(
|
||||||
context : Context,
|
context : Context,
|
||||||
drawableId : Int,
|
drawableId : Int,
|
||||||
color : Int,
|
color : Int,
|
||||||
alphaMultiplier: Float? = null
|
alphaMultiplier : Float? = null
|
||||||
) : Drawable {
|
) : Drawable {
|
||||||
val rgb = (color and 0xffffff) or Color.BLACK
|
val rgb = (color and 0xffffff) or Color.BLACK
|
||||||
val alpha = if( alphaMultiplier ==null ){
|
val alpha = if(alphaMultiplier == null) {
|
||||||
(color ushr 24)
|
(color ushr 24)
|
||||||
}else{
|
} else {
|
||||||
clipRange(0,255,((color ushr 24).toFloat() * alphaMultiplier +0.5f ).toInt())
|
clipRange(0, 255, ((color ushr 24).toFloat() * alphaMultiplier + 0.5f).toInt())
|
||||||
}
|
}
|
||||||
|
|
||||||
// 色指定が他のアイコンに影響しないようにする
|
val cacheKey = ColoredDrawableCacheKey(drawableId, rgb, alpha)
|
||||||
// カラーフィルターとアルファ値を設定する
|
synchronized(coloredDrawableCache) {
|
||||||
val d = ContextCompat.getDrawable(context, drawableId) !!.mutate()
|
val now = SystemClock.elapsedRealtime()
|
||||||
d.setColorFilter(rgb, PorterDuff.Mode.SRC_ATOP)
|
val cacheValue = coloredDrawableCache[cacheKey]
|
||||||
d.alpha = alpha
|
if(cacheValue != null) {
|
||||||
|
cacheValue.lastUsed = now
|
||||||
return d
|
return cacheValue.drawable
|
||||||
|
}
|
||||||
|
|
||||||
|
if(now - coloredDrawableCacheLastSweep >= 10000L && coloredDrawableCache.size >= 64) {
|
||||||
|
coloredDrawableCacheLastSweep = now
|
||||||
|
val it = coloredDrawableCache.entries.iterator()
|
||||||
|
while(it.hasNext()) {
|
||||||
|
val (_, v) = it.next()
|
||||||
|
if(now - v.lastUsed >= 10000L) {
|
||||||
|
it.remove()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 色指定が他のアイコンに影響しないようにする
|
||||||
|
// カラーフィルターとアルファ値を設定する
|
||||||
|
val d = ContextCompat.getDrawable(context, drawableId) !!.mutate()
|
||||||
|
d.colorFilter = createColorFilter(rgb)
|
||||||
|
d.alpha = alpha
|
||||||
|
coloredDrawableCache[cacheKey] = ColoredDrawableCacheValue(d, now)
|
||||||
|
return d
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fun setIconDrawableId(
|
fun setIconDrawableId(
|
||||||
context : Context,
|
context : Context,
|
||||||
imageView : ImageView,
|
imageView : ImageView,
|
||||||
drawableId : Int,
|
drawableId : Int,
|
||||||
color : Int? = null,
|
color : Int? = null,
|
||||||
alphaMultiplier: Float? = null
|
alphaMultiplier : Float? = null
|
||||||
) {
|
) {
|
||||||
if(color == null) {
|
if(color == null) {
|
||||||
// ImageViewにアイコンを設定する。デフォルトの色
|
// ImageViewにアイコンを設定する。デフォルトの色
|
||||||
imageView.setImageDrawable(ContextCompat.getDrawable(context, drawableId))
|
imageView.setImageDrawable(ContextCompat.getDrawable(context, drawableId))
|
||||||
} else {
|
} else {
|
||||||
imageView.setImageDrawable(createColoredDrawable(context, drawableId, color,alphaMultiplier))
|
imageView.setImageDrawable(
|
||||||
|
createColoredDrawable(
|
||||||
|
context,
|
||||||
|
drawableId,
|
||||||
|
color,
|
||||||
|
alphaMultiplier
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,9 +201,15 @@ object Styler {
|
||||||
imageView : ImageView,
|
imageView : ImageView,
|
||||||
iconAttrId : Int,
|
iconAttrId : Int,
|
||||||
color : Int? = null,
|
color : Int? = null,
|
||||||
alphaMultiplier: Float? = null
|
alphaMultiplier : Float? = null
|
||||||
) {
|
) {
|
||||||
setIconDrawableId(context, imageView, getAttributeResourceId(context, iconAttrId), color,alphaMultiplier)
|
setIconDrawableId(
|
||||||
|
context,
|
||||||
|
imageView,
|
||||||
|
getAttributeResourceId(context, iconAttrId),
|
||||||
|
color,
|
||||||
|
alphaMultiplier
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getVisibilityIconAttr(isMisskeyData : Boolean, visibility : TootVisibility) : Int {
|
fun getVisibilityIconAttr(isMisskeyData : Boolean, visibility : TootVisibility) : Int {
|
||||||
|
@ -222,7 +328,7 @@ object Styler {
|
||||||
, relation : UserRelation
|
, relation : UserRelation
|
||||||
, who : TootAccount
|
, who : TootAccount
|
||||||
, defaultColor : Int
|
, defaultColor : Int
|
||||||
,alphaMultiplier : Float? = null
|
, alphaMultiplier : Float? = null
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun colorError() = Styler.getAttributeColor(context, R.attr.colorRegexFilterError)
|
fun colorError() = Styler.getAttributeColor(context, R.attr.colorRegexFilterError)
|
||||||
|
@ -233,17 +339,35 @@ object Styler {
|
||||||
|
|
||||||
relation.blocked_by -> {
|
relation.blocked_by -> {
|
||||||
ivDot.visibility = View.VISIBLE
|
ivDot.visibility = View.VISIBLE
|
||||||
setIconDrawableId(context, ivDot, R.drawable.ic_blocked_by, color = colorError(),alphaMultiplier = alphaMultiplier)
|
setIconDrawableId(
|
||||||
|
context,
|
||||||
|
ivDot,
|
||||||
|
R.drawable.ic_blocked_by,
|
||||||
|
color = colorError(),
|
||||||
|
alphaMultiplier = alphaMultiplier
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
relation.requested_by -> {
|
relation.requested_by -> {
|
||||||
ivDot.visibility = View.VISIBLE
|
ivDot.visibility = View.VISIBLE
|
||||||
setIconDrawableId(context, ivDot, R.drawable.ic_requested_by, color = colorError(),alphaMultiplier = alphaMultiplier)
|
setIconDrawableId(
|
||||||
|
context,
|
||||||
|
ivDot,
|
||||||
|
R.drawable.ic_requested_by,
|
||||||
|
color = colorError(),
|
||||||
|
alphaMultiplier = alphaMultiplier
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
relation.followed_by -> {
|
relation.followed_by -> {
|
||||||
ivDot.visibility = View.VISIBLE
|
ivDot.visibility = View.VISIBLE
|
||||||
setIconAttr(context, ivDot, R.attr.ic_followed_by, color = colorAccent(),alphaMultiplier = alphaMultiplier)
|
setIconAttr(
|
||||||
|
context,
|
||||||
|
ivDot,
|
||||||
|
R.attr.ic_followed_by,
|
||||||
|
color = colorAccent(),
|
||||||
|
alphaMultiplier = alphaMultiplier
|
||||||
|
)
|
||||||
// 被フォローリクエスト状態の時に followed_by が 真と偽の両方がありえるようなので
|
// 被フォローリクエスト状態の時に followed_by が 真と偽の両方がありえるようなので
|
||||||
// Relationshipだけを見ても被フォローリクエスト状態は分からないっぽい
|
// Relationshipだけを見ても被フォローリクエスト状態は分からないっぽい
|
||||||
// 仕方ないので馬鹿正直に「 followed_byが真ならバッジをつける」しかできない
|
// 仕方ないので馬鹿正直に「 followed_byが真ならバッジをつける」しかできない
|
||||||
|
@ -292,7 +416,7 @@ object Styler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setIconAttr(context, ibFollow, icon_attr, color = color,alphaMultiplier = alphaMultiplier)
|
setIconAttr(context, ibFollow, icon_attr, color = color, alphaMultiplier = alphaMultiplier)
|
||||||
ibFollow.contentDescription = contentDescription
|
ibFollow.contentDescription = contentDescription
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,7 @@ internal class ViewHolderHeaderProfile(
|
||||||
tvCreated.textSize = f
|
tvCreated.textSize = f
|
||||||
}
|
}
|
||||||
|
|
||||||
val contentColor = column.getContentColor(activity)
|
val contentColor = column.getContentColor()
|
||||||
this.contentColor = contentColor
|
this.contentColor = contentColor
|
||||||
|
|
||||||
tvMoved.textColor = contentColor
|
tvMoved.textColor = contentColor
|
||||||
|
@ -164,7 +164,7 @@ internal class ViewHolderHeaderProfile(
|
||||||
alphaMultiplier = Styler.boost_alpha
|
alphaMultiplier = Styler.boost_alpha
|
||||||
)
|
)
|
||||||
|
|
||||||
val acctColor = column.getAcctColor(activity)
|
val acctColor = column.getAcctColor()
|
||||||
tvCreated.textColor = acctColor
|
tvCreated.textColor = acctColor
|
||||||
tvMovedAcct.textColor = acctColor
|
tvMovedAcct.textColor = acctColor
|
||||||
|
|
||||||
|
@ -407,11 +407,7 @@ internal class ViewHolderHeaderProfile(
|
||||||
else -> acctLong
|
else -> acctLong
|
||||||
}
|
}
|
||||||
|
|
||||||
val acct_color = when {
|
tv.setTextColor(if(AcctColor.hasColorForeground(ac)) ac.color_fg else column.getAcctColor() )
|
||||||
column.acct_color != 0 -> column.acct_color
|
|
||||||
else -> Styler.getAttributeColor(activity, R.attr.colorTimeSmall)
|
|
||||||
}
|
|
||||||
tv.setTextColor(if(AcctColor.hasColorForeground(ac)) ac.color_fg else acct_color)
|
|
||||||
|
|
||||||
if(AcctColor.hasColorBackground(ac)) {
|
if(AcctColor.hasColorBackground(ac)) {
|
||||||
tv.setBackgroundColor(ac.color_bg)
|
tv.setBackgroundColor(ac.color_bg)
|
||||||
|
|
|
@ -30,7 +30,7 @@ internal class ViewHolderHeaderSearch(
|
||||||
val sv = DecodeOptions(activity, access_info,decodeEmoji = true).decodeHTML( html)
|
val sv = DecodeOptions(activity, access_info,decodeEmoji = true).decodeHTML( html)
|
||||||
|
|
||||||
tvSearchDesc.text = sv
|
tvSearchDesc.text = sv
|
||||||
tvSearchDesc.textColor = column.getContentColor(activity)
|
tvSearchDesc.textColor = column.getContentColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewRecycled() {
|
override fun onViewRecycled() {
|
||||||
|
|
|
@ -924,7 +924,6 @@
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<View style="@style/setting_divider"/>
|
<View style="@style/setting_divider"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -1020,11 +1019,18 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- #################################################### -->
|
||||||
|
|
||||||
<View style="@style/setting_divider"/>
|
<View style="@style/setting_divider"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/setting_row_label"
|
style="@style/setting_row_label"
|
||||||
android:text="@string/background_color_unlisted"
|
android:text="@string/toot_background_color"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
|
android:text="@string/unlisted_visibility"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
@ -1047,11 +1053,9 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<View style="@style/setting_divider"/>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/setting_row_label"
|
style="@style/setting_row_label_indent1"
|
||||||
android:text="@string/background_color_follower"
|
android:text="@string/followers_visibility"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
@ -1074,11 +1078,10 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<View style="@style/setting_divider"/>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/setting_row_label"
|
style="@style/setting_row_label_indent1"
|
||||||
android:text="@string/background_color_direct_with_user"
|
android:text="@string/direct_with_user_visibility"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
@ -1101,11 +1104,9 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<View style="@style/setting_divider"/>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/setting_row_label"
|
style="@style/setting_row_label_indent1"
|
||||||
android:text="@string/background_color_direct_no_user"
|
android:text="@string/direct_only_me_visibility"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
@ -1128,6 +1129,8 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- ######################################################## -->
|
||||||
|
|
||||||
<View style="@style/setting_divider"/>
|
<View style="@style/setting_divider"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -1155,6 +1158,221 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- カラム色のデフォルト ########################################################## -->
|
||||||
|
|
||||||
|
<View style="@style/setting_divider"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/setting_row_label"
|
||||||
|
android:text="@string/column_color_default"
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/llColumnHeader"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="6dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingBottom="3dp"
|
||||||
|
android:paddingEnd="12dp"
|
||||||
|
android:paddingStart="12dp"
|
||||||
|
android:paddingTop="3dp"
|
||||||
|
>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/ivColumnHeader"
|
||||||
|
android:layout_width="32dp"
|
||||||
|
android:layout_height="32dp"
|
||||||
|
android:layout_marginEnd="4dp"
|
||||||
|
android:importantForAccessibility="no"
|
||||||
|
tools:src="?attr/btn_federate_tl"
|
||||||
|
/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvColumnName"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/federate_timeline"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
|
android:text="@string/header_background_color"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdHeaderBackgroundEdit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/edit"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdHeaderBackgroundReset"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/reset"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
|
android:text="@string/header_foreground_color"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdHeaderForegroundEdit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/edit"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdHeaderForegroundReset"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/reset"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/flColumnBackground"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="12dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="start"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="?attr/colorTimeSmall"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:text="@string/acct_sample"
|
||||||
|
android:id="@+id/tvSampleAcct"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<jp.juggler.subwaytooter.view.MyTextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="3dp"
|
||||||
|
android:lineSpacingMultiplier="1.1"
|
||||||
|
android:textColor="?attr/colorContentText"
|
||||||
|
android:gravity="start"
|
||||||
|
android:text="@string/content_sample"
|
||||||
|
android:id="@+id/tvSampleContent"
|
||||||
|
/>
|
||||||
|
</LinearLayout>
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
|
android:text="@string/content_background_color"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdContentBackgroundEdit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/edit"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdContentBackgroundReset"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/reset"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
|
android:text="@string/content_acct_color"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdContentAcctEdit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/edit"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdContentAcctReset"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/reset"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
|
android:text="@string/content_text_color"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdContentTextEdit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/edit"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCcdContentTextReset"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/reset"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- ########################################################## -->
|
||||||
|
|
||||||
<View style="@style/setting_divider"/>
|
<View style="@style/setting_divider"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -1255,13 +1473,10 @@
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
<TextView
|
android:text="@string/button_background_color"
|
||||||
style="@style/setting_row_label"
|
/>
|
||||||
android:text="@string/button_background_color"
|
|
||||||
/>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
@ -1283,14 +1498,10 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form"
|
<TextView
|
||||||
>
|
style="@style/setting_row_label_indent1"
|
||||||
|
android:text="@string/button_foreground_color"
|
||||||
<TextView
|
/>
|
||||||
style="@style/setting_row_label"
|
|
||||||
android:text="@string/button_foreground_color"
|
|
||||||
/>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
@ -1312,13 +1523,10 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
<TextView
|
android:text="@string/quick_toot_bar_background_color"
|
||||||
style="@style/setting_row_label"
|
/>
|
||||||
android:text="@string/tab_background_color"
|
|
||||||
/>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
@ -1340,13 +1548,10 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
<TextView
|
android:text="@string/tab_divider_color"
|
||||||
style="@style/setting_row_label"
|
/>
|
||||||
android:text="@string/tab_divider_color"
|
|
||||||
/>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
@ -1368,13 +1573,10 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<TextView
|
||||||
|
style="@style/setting_row_label_indent1"
|
||||||
<TextView
|
android:text="@string/tab_indicator_color"
|
||||||
style="@style/setting_row_label"
|
/>
|
||||||
android:text="@string/tab_indicator_color"
|
|
||||||
/>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
@ -1396,6 +1598,8 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- ################################################################## -->
|
||||||
|
|
||||||
<View style="@style/setting_divider"/>
|
<View style="@style/setting_divider"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -1409,7 +1613,6 @@
|
||||||
android:id="@+id/tvTimelineFontUrl"
|
android:id="@+id/tvTimelineFontUrl"
|
||||||
style="@style/setting_horizontal_stretch"
|
style="@style/setting_horizontal_stretch"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
@ -1432,6 +1635,8 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- ################################################################## -->
|
||||||
|
|
||||||
<View style="@style/setting_divider"/>
|
<View style="@style/setting_divider"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -1590,6 +1795,7 @@
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/etBoostAlpha"
|
android:id="@+id/etBoostAlpha"
|
||||||
style="@style/setting_horizontal_stretch"
|
style="@style/setting_horizontal_stretch"
|
||||||
|
@ -1716,8 +1922,8 @@
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/setting_row_label"
|
style="@style/setting_row_label"
|
||||||
android:text="@string/timeout_for_embed_media_viewer"
|
|
||||||
android:labelFor="@+id/etMediaReadTimeout"
|
android:labelFor="@+id/etMediaReadTimeout"
|
||||||
|
android:text="@string/timeout_for_embed_media_viewer"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
|
@ -62,13 +62,10 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/setting_row_label"
|
style="@style/setting_row_label_indent1"
|
||||||
android:text="@string/background_color"
|
android:text="@string/background_color"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
@ -89,13 +86,10 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/setting_row_label"
|
style="@style/setting_row_label_indent1"
|
||||||
android:text="@string/foreground_color"
|
android:text="@string/foreground_color"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout style="@style/setting_row_form">
|
<LinearLayout style="@style/setting_row_form">
|
||||||
|
|
||||||
|
|
|
@ -779,10 +779,6 @@
|
||||||
<string name="reply_to">Reply to %1$s</string>
|
<string name="reply_to">Reply to %1$s</string>
|
||||||
<string name="deleted_at">deleted at %1$s</string>
|
<string name="deleted_at">deleted at %1$s</string>
|
||||||
<string name="already_reactioned">already reactioned.</string>
|
<string name="already_reactioned">already reactioned.</string>
|
||||||
<string name="background_color_unlisted">Toot background color of \'Unlisted\' visibility</string>
|
|
||||||
<string name="background_color_follower">Toot background color of \'follower\' visibility</string>
|
|
||||||
<string name="background_color_direct_with_user">Toot background color of \'Direct to users\' visibility</string>
|
|
||||||
<string name="background_color_direct_no_user">Toot background color of \'Direct only me\' visibility</string>
|
|
||||||
<string name="already_voted">Already voted.</string>
|
<string name="already_voted">Already voted.</string>
|
||||||
|
|
||||||
<string name="endorse_set">Endorse in your profile</string>
|
<string name="endorse_set">Endorse in your profile</string>
|
||||||
|
|
|
@ -72,10 +72,6 @@
|
||||||
<string name="back_button_action">戻るボタンの動作</string>
|
<string name="back_button_action">戻るボタンの動作</string>
|
||||||
<string name="back_to_column_list">戻るボタンでカラム一覧を開く</string>
|
<string name="back_to_column_list">戻るボタンでカラム一覧を開く</string>
|
||||||
<string name="background_color">背景色</string>
|
<string name="background_color">背景色</string>
|
||||||
<string name="background_color_direct_no_user">トゥート背景色 \'ダイレクト(自分のみ)\'</string>
|
|
||||||
<string name="background_color_direct_with_user">トゥート背景色 \'ダイレクト(対象ユーザあり)\'</string>
|
|
||||||
<string name="background_color_follower">トゥート背景色 \'フォロワーのみ\'</string>
|
|
||||||
<string name="background_color_unlisted">トゥート背景色 \'未収載\'</string>
|
|
||||||
<string name="background_image">背景画像</string>
|
<string name="background_image">背景画像</string>
|
||||||
<string name="background_image_alpha">背景画像のアルファ値</string>
|
<string name="background_image_alpha">背景画像のアルファ値</string>
|
||||||
<string name="behavior">挙動</string>
|
<string name="behavior">挙動</string>
|
||||||
|
@ -795,4 +791,17 @@
|
||||||
<string name="mute_application_confirm">アプリ \"%1$s\" はミュートされます。よろしいですか?</string>
|
<string name="mute_application_confirm">アプリ \"%1$s\" はミュートされます。よろしいですか?</string>
|
||||||
<string name="boost_button_alpha">ブーストボタンのアルファ不透明度(単位:%。アプリの再起動が必要。本文テキスト色のアルファ値の影響も受けます)</string>
|
<string name="boost_button_alpha">ブーストボタンのアルファ不透明度(単位:%。アプリの再起動が必要。本文テキスト色のアルファ値の影響も受けます)</string>
|
||||||
|
|
||||||
|
<string name="toot_background_color">トゥート背景色</string>
|
||||||
|
<string name="unlisted_visibility">\'未収載\' 公開範囲</string>
|
||||||
|
<string name="followers_visibility">\'フォロワーのみ\' 公開範囲</string>
|
||||||
|
<string name="direct_with_user_visibility">\'誰かへのDM\' 公開範囲</string>
|
||||||
|
<string name="direct_only_me_visibility">\'自分へのDM\' 公開範囲</string>
|
||||||
|
<string name="column_color_default">カラムの色の既定値(アプリ再起動が必要)</string>
|
||||||
|
<string name="header_background_color">ヘッダーの背景色</string>
|
||||||
|
<string name="header_foreground_color">ヘッダーのアイコンや文字の色</string>
|
||||||
|
<string name="content_background_color">内容の背景色</string>
|
||||||
|
<string name="content_acct_color">内容のAcctの文字色</string>
|
||||||
|
<string name="content_text_color">内容の本文の文字色</string>
|
||||||
|
<string name="quick_toot_bar_background_color">簡易投稿入力の背景色</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -767,10 +767,10 @@
|
||||||
<string name="reply_to">Reply to %1$s</string>
|
<string name="reply_to">Reply to %1$s</string>
|
||||||
<string name="deleted_at">deleted at %1$s</string>
|
<string name="deleted_at">deleted at %1$s</string>
|
||||||
<string name="already_reactioned">already reactioned.</string>
|
<string name="already_reactioned">already reactioned.</string>
|
||||||
<string name="background_color_unlisted">Toot background color of \'Unlisted\' visibility</string>
|
<string name="unlisted_visibility">\'Unlisted\' visibility</string>
|
||||||
<string name="background_color_follower">Toot background color of \'follower\' visibility</string>
|
<string name="followers_visibility">\'Followers\' visibility</string>
|
||||||
<string name="background_color_direct_with_user">Toot background color of \'Direct to users\' visibility</string>
|
<string name="direct_with_user_visibility">\'Direct to users\' visibility</string>
|
||||||
<string name="background_color_direct_no_user">Toot background color of \'Direct only me\' visibility</string>
|
<string name="direct_only_me_visibility">\'Direct only me\' visibility</string>
|
||||||
<string name="already_voted">Already voted.</string>
|
<string name="already_voted">Already voted.</string>
|
||||||
|
|
||||||
<string name="endorse_set">Endorse in your profile</string>
|
<string name="endorse_set">Endorse in your profile</string>
|
||||||
|
@ -813,5 +813,13 @@
|
||||||
<string name="make_quote_renote">Use \"Quoted Renote\"</string>
|
<string name="make_quote_renote">Use \"Quoted Renote\"</string>
|
||||||
<string name="mute_application_confirm">Application \"%1$s\" will be muted. Are you sure ?</string>
|
<string name="mute_application_confirm">Application \"%1$s\" will be muted. Are you sure ?</string>
|
||||||
<string name="boost_button_alpha">Boost button alpha opacity (Unit:%. app restart required. also affected of content text alpha.)</string>
|
<string name="boost_button_alpha">Boost button alpha opacity (Unit:%. app restart required. also affected of content text alpha.)</string>
|
||||||
|
<string name="toot_background_color">Toot background color</string>
|
||||||
|
<string name="column_color_default">Column color default(app restart required)</string>
|
||||||
|
<string name="header_background_color">Header background color</string>
|
||||||
|
<string name="header_foreground_color">Header foreground color</string>
|
||||||
|
<string name="content_background_color">Content background color</string>
|
||||||
|
<string name="content_acct_color">Content acct color</string>
|
||||||
|
<string name="content_text_color">Content text color</string>
|
||||||
|
<string name="quick_toot_bar_background_color">Quick toot bar background color</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -261,19 +261,6 @@
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="setting_row_label">
|
|
||||||
<item name="android:layout_width">match_parent</item>
|
|
||||||
<item name="android:layout_height">wrap_content</item>
|
|
||||||
|
|
||||||
<item name="android:paddingLeft">12dp</item>
|
|
||||||
<item name="android:paddingRight">0dp</item>
|
|
||||||
|
|
||||||
<item name="android:paddingStart" tools:ignore="NewApi">12dp</item>
|
|
||||||
<item name="android:paddingEnd" tools:ignore="NewApi">0dp</item>
|
|
||||||
|
|
||||||
<item name="android:textSize">14sp</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="setting_row_form">
|
<style name="setting_row_form">
|
||||||
<item name="android:layout_width">match_parent</item>
|
<item name="android:layout_width">match_parent</item>
|
||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
|
@ -288,6 +275,37 @@
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="setting_row_label">
|
||||||
|
<item name="android:layout_width">match_parent</item>
|
||||||
|
<item name="android:layout_height">wrap_content</item>
|
||||||
|
|
||||||
|
<item name="android:paddingLeft">12dp</item>
|
||||||
|
<item name="android:paddingRight">0dp</item>
|
||||||
|
|
||||||
|
<item name="android:paddingStart" tools:ignore="NewApi">12dp</item>
|
||||||
|
<item name="android:paddingEnd" tools:ignore="NewApi">0dp</item>
|
||||||
|
|
||||||
|
<item name="android:textSize">14sp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<style name="setting_row_label_indent1">
|
||||||
|
<item name="android:layout_width">match_parent</item>
|
||||||
|
<item name="android:layout_height">wrap_content</item>
|
||||||
|
<item name="android:orientation">horizontal</item>
|
||||||
|
<item name="android:layout_marginTop">3dp</item>
|
||||||
|
<item name="android:baselineAligned">true</item>
|
||||||
|
|
||||||
|
<item name="android:paddingLeft">48dp</item>
|
||||||
|
<item name="android:paddingRight">0dp</item>
|
||||||
|
|
||||||
|
<item name="android:paddingStart" tools:ignore="NewApi">48dp</item>
|
||||||
|
<item name="android:paddingEnd" tools:ignore="NewApi">0dp</item>
|
||||||
|
|
||||||
|
<item name="android:textSize">14sp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<style name="setting_row_form_fields" parent="setting_row_form">
|
<style name="setting_row_form_fields" parent="setting_row_form">
|
||||||
<item name="android:paddingLeft">8dp</item>
|
<item name="android:paddingLeft">8dp</item>
|
||||||
<item name="android:paddingRight">0dp</item>
|
<item name="android:paddingRight">0dp</item>
|
||||||
|
|
Loading…
Reference in New Issue