diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActAppSettingChild.kt b/app/src/main/java/jp/juggler/subwaytooter/ActAppSettingChild.kt index be814396..c291f3be 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ActAppSettingChild.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ActAppSettingChild.kt @@ -73,7 +73,6 @@ class ActAppSettingChild : AppCompatActivity() internal const val REQUEST_CODE_TIMELINE_FONT = 1 internal const val REQUEST_CODE_TIMELINE_FONT_BOLD = 2 - private val reLinefeed = Regex("[\\x0d\\x0a]+") } @@ -132,7 +131,6 @@ class ActAppSettingChild : AppCompatActivity() private var etRoundRatio : EditText? = null private var etBoostAlpha : EditText? = null private var etMediaReadTimeout : EditText? = null - private var tvTimelineFontUrl : TextView? = null private var timeline_font : String? = null @@ -143,6 +141,10 @@ class ActAppSettingChild : AppCompatActivity() private var etAcctFontSize : EditText? = null private var tvTimelineFontSize : TextView? = null private var tvAcctFontSize : TextView? = null + + private var etHeaderTextSize : EditText? = null + private var tvHeaderTextSize : TextView? = null + private var etAvatarIconSize : EditText? = null private var etPullNotificationCheckInterval : EditText? = null @@ -153,6 +155,7 @@ class ActAppSettingChild : AppCompatActivity() private var etBoostButtonSize : EditText? = null private var etReplyIconSize : EditText? = null + private var etHeaderIconSize : EditText? = null private var tvUserAgentError : TextView? = null @@ -188,19 +191,19 @@ class ActAppSettingChild : AppCompatActivity() override fun onCreate(savedInstanceState : Bundle?) { super.onCreate(savedInstanceState) - + App1.setActivityTheme(this, false) - + pref = Pref.pref(this) val intent = this.intent - val layoutId = intent.getIntExtra(EXTRA_LAYOUT_ID,0) - val titleId = intent.getIntExtra(EXTRA_TITLE_ID,0) - + val layoutId = intent.getIntExtra(EXTRA_LAYOUT_ID, 0) + val titleId = intent.getIntExtra(EXTRA_TITLE_ID, 0) + this.title = getString(titleId) - + setContentView(layoutId) - + initUI() loadUIFromData() @@ -323,7 +326,7 @@ class ActAppSettingChild : AppCompatActivity() , R.id.btnCcdContentAcctReset , R.id.btnCcdContentTextEdit , R.id.btnCcdContentTextReset - ,R.id.btnInstanceTickerCopyright + , R.id.btnInstanceTickerCopyright ).forEach { findViewById(it)?.setOnClickListener(this) } @@ -400,6 +403,17 @@ class ActAppSettingChild : AppCompatActivity() ) ) + tvHeaderTextSize = findViewById(R.id.tvHeaderTextSize) + etHeaderTextSize = findViewById(R.id.etHeaderTextSize) + etHeaderTextSize?.addTextChangedListener( + SizeCheckTextWatcher( + tvHeaderTextSize !!, + etHeaderTextSize !!, + Pref.default_header_font_size + ) + ) + + etNotificationTlFontSize = findViewById(R.id.etNotificationTlFontSize) etNotificationTlFontSize?.addTextChangedListener( SizeCheckTextWatcher( @@ -414,7 +428,9 @@ class ActAppSettingChild : AppCompatActivity() etPullNotificationCheckInterval = findViewById(R.id.etPullNotificationCheckInterval) etBoostButtonSize = findViewById(R.id.etBoostButtonSize) - etReplyIconSize= findViewById(R.id.etReplyIconSize) + etReplyIconSize = findViewById(R.id.etReplyIconSize) + etHeaderIconSize = findViewById(R.id.etHeaderIconSize) + tvTimelineFontUrl = findViewById(R.id.tvTimelineFontUrl) tvTimelineFontBoldUrl = findViewById(R.id.tvTimelineFontBoldUrl) @@ -431,12 +447,12 @@ class ActAppSettingChild : AppCompatActivity() } private fun initSpinner(@IdRes viewId : Int, vararg captions : String) : Spinner? = - findViewById(viewId)?.apply{ + findViewById(viewId)?.apply { adapter = ArrayAdapter( this@ActAppSettingChild, android.R.layout.simple_spinner_item, arrayOf(*captions) - ).apply{ + ).apply { setDropDownViewResource(R.layout.lv_spinner_dropdown) } onItemSelectedListener = this@ActAppSettingChild @@ -493,6 +509,7 @@ class ActAppSettingChild : AppCompatActivity() etNotificationTlIconSize?.setText(Pref.spNotificationTlIconSize(pref)) etBoostButtonSize?.setText(Pref.spBoostButtonSize(pref)) etReplyIconSize?.setText(Pref.spReplyIconSize(pref)) + etHeaderIconSize?.setText(Pref.spHeaderIconSize(pref)) etPullNotificationCheckInterval?.setText(Pref.spPullNotificationCheckInterval(pref)) etMediaSizeMax?.setText(Pref.spMediaSizeMax(pref)) @@ -508,6 +525,7 @@ class ActAppSettingChild : AppCompatActivity() etTimelineFontSize?.setText(formatFontSize(Pref.fpTimelineFontSize(pref))) etAcctFontSize?.setText(formatFontSize(Pref.fpAcctFontSize(pref))) etNotificationTlFontSize?.setText(formatFontSize(Pref.fpNotificationTlFontSize(pref))) + etHeaderTextSize?.setText(formatFontSize(Pref.fpHeaderTextSize(pref))) etUserAgent?.hint = App1.userAgentDefault @@ -524,6 +542,7 @@ class ActAppSettingChild : AppCompatActivity() etNotificationTlFontSize, Pref.default_notification_tl_font_size ) + showFontSize(tvHeaderTextSize, etHeaderTextSize, Pref.default_header_font_size) showUserAgentError() showColumnSample() @@ -554,6 +573,7 @@ class ActAppSettingChild : AppCompatActivity() putFontSize(Pref.fpAcctFontSize, etAcctFontSize) putFontSize(Pref.fpNotificationTlFontSize, etNotificationTlFontSize) putFontSize(Pref.fpNotificationTlFontSize, etNotificationTlFontSize) + putFontSize(Pref.fpHeaderTextSize, etHeaderTextSize) fun putText(sp : StringPref, et : EditText?, filter : (String) -> String = { it.trim() }) { et ?: return @@ -570,6 +590,7 @@ class ActAppSettingChild : AppCompatActivity() putText(Pref.spNotificationTlIconSize, etNotificationTlIconSize) putText(Pref.spBoostButtonSize, etBoostButtonSize) putText(Pref.spReplyIconSize, etReplyIconSize) + putText(Pref.spHeaderIconSize, etHeaderIconSize) putText(Pref.spPullNotificationCheckInterval, etPullNotificationCheckInterval) putText(Pref.spMediaSizeMax, etMediaSizeMax) putText(Pref.spMovieSizeMax, etMovieSizeMax) @@ -913,7 +934,10 @@ class ActAppSettingChild : AppCompatActivity() showToast(this, ex, "could not open picker for font") } - R.id.btnInstanceTickerCopyright -> App1.openBrowser(this@ActAppSettingChild,"https://wee.jp/mastodon/") + R.id.btnInstanceTickerCopyright -> App1.openBrowser( + this@ActAppSettingChild, + "https://wee.jp/mastodon/" + ) } } diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt b/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt index a0759583..75c8c67e 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt @@ -90,6 +90,7 @@ class ActMain : AppCompatActivity() var boostButtonSize = 1 var replyIconSize = 1 + var headerIconSize = 1 var timeline_font : Typeface = Typeface.DEFAULT var timeline_font_bold : Typeface = Typeface.DEFAULT_BOLD } @@ -116,6 +117,7 @@ class ActMain : AppCompatActivity() var timeline_font_size_sp = Float.NaN var acct_font_size_sp = Float.NaN var notification_tl_font_size_sp = Float.NaN + var header_text_size_sp = Float.NaN internal var bStart : Boolean = false @@ -397,6 +399,7 @@ class ActMain : AppCompatActivity() timeline_font_size_sp = validateFloat(Pref.fpTimelineFontSize(pref)) acct_font_size_sp = validateFloat(Pref.fpAcctFontSize(pref)) notification_tl_font_size_sp = validateFloat(Pref.fpNotificationTlFontSize(pref)) + header_text_size_sp = validateFloat(Pref.fpHeaderTextSize(pref)) initUI() @@ -1246,6 +1249,7 @@ class ActMain : AppCompatActivity() notificationTlIconSize = parseIconSize(Pref.spNotificationTlIconSize) boostButtonSize = parseIconSize(Pref.spBoostButtonSize) replyIconSize = parseIconSize(Pref.spReplyIconSize) + headerIconSize = parseIconSize(Pref.spHeaderIconSize) run { var round_ratio = 33f @@ -2820,7 +2824,7 @@ class ActMain : AppCompatActivity() val lp = LinearLayout.LayoutParams(nAutoCwCellWidth, LinearLayout.LayoutParams.WRAP_CONTENT) val tv = TextView(this) tv.layoutParams = lp - if(timeline_font_size_sp.isNaN()) { + if(!timeline_font_size_sp.isNaN()) { tv.textSize = timeline_font_size_sp } tv.typeface = timeline_font diff --git a/app/src/main/java/jp/juggler/subwaytooter/ColumnViewHolder.kt b/app/src/main/java/jp/juggler/subwaytooter/ColumnViewHolder.kt index 9367d20b..655dd378 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ColumnViewHolder.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ColumnViewHolder.kt @@ -392,24 +392,51 @@ class ColumnViewHolder( cbEnableSpeech.setOnCheckedChangeListener(this) cbOldApi.setOnCheckedChangeListener(this) - if(Pref.bpMoveNotificationsQuickFilter(activity.pref)){ + if(Pref.bpMoveNotificationsQuickFilter(activity.pref)) { (svQuickFilter.parent as? ViewGroup)?.removeView(svQuickFilter) - llColumnSettingInside.addView(svQuickFilter,0) + llColumnSettingInside.addView(svQuickFilter, 0) - svQuickFilter.setOnTouchListener { v, event -> + svQuickFilter.setOnTouchListener { v, event -> val action = event.action - if(action == MotionEvent.ACTION_DOWN){ - val sv = v as? HorizontalScrollView - if(sv != null && sv.getChildAt(0).width > sv.width ){ - sv.requestDisallowInterceptTouchEvent(true) - } - } - v.onTouchEvent(event) + if(action == MotionEvent.ACTION_DOWN) { + val sv = v as? HorizontalScrollView + if(sv != null && sv.getChildAt(0).width > sv.width) { + sv.requestDisallowInterceptTouchEvent(true) + } + } + v.onTouchEvent(event) } } + if(! activity.header_text_size_sp.isNaN()) { + tvColumnName.textSize = activity.header_text_size_sp + + val acctSize = activity.header_text_size_sp * 0.857f + tvColumnContext.textSize = acctSize + tvColumnStatus.textSize = acctSize + tvColumnIndex.textSize = acctSize + } + initLoadingTextView() + var pad = 0 + var wh = ActMain.headerIconSize + pad * 2 + ivColumnIcon.layoutParams.width = wh + ivColumnIcon.layoutParams.height = wh + ivColumnIcon.setPaddingRelative(pad, pad, pad, pad) + + pad = (ActMain.headerIconSize * 0.125f + 0.5f).toInt() + wh = ActMain.headerIconSize + pad * 2 + btnColumnSetting.layoutParams.width = wh + btnColumnSetting.layoutParams.height = wh + btnColumnSetting.setPaddingRelative(pad, pad, pad, pad) + btnColumnReload.layoutParams.width = wh + btnColumnReload.layoutParams.height = wh + btnColumnReload.setPaddingRelative(pad, pad, pad, pad) + btnColumnClose.layoutParams.width = wh + btnColumnClose.layoutParams.height = wh + btnColumnClose.setPaddingRelative(pad, pad, pad, pad) + // 入力の追跡 etRegexFilter.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged( @@ -1471,20 +1498,20 @@ class ColumnViewHolder( vg(btnQuickFilterReaction, column.isMisskey) vg(btnQuickFilterVote, column.isMisskey) - - vg(btnQuickFilterFavourite, !column.isMisskey) - + + vg(btnQuickFilterFavourite, ! column.isMisskey) + val insideColumnSetting = Pref.bpMoveNotificationsQuickFilter(activity.pref) - val showQuickFilterButton:(btn : View, iconId : Int, selected : Boolean)->Unit - - if(insideColumnSetting){ + val showQuickFilterButton : (btn : View, iconId : Int, selected : Boolean) -> Unit + + if(insideColumnSetting) { svQuickFilter.setBackgroundColor(0) - - val colorFg = getAttributeColor(activity,R.attr.colorContentText) + + val colorFg = getAttributeColor(activity, R.attr.colorContentText) val colorBgSelected = colorFg.applyAlphaMultiplier(0.25f) - showQuickFilterButton = { btn , iconId , selected -> + showQuickFilterButton = { btn, iconId, selected -> ViewCompat.setBackground( btn, if(selected) { @@ -1492,8 +1519,8 @@ class ColumnViewHolder( colorBgSelected, colorFg ) - }else { - ContextCompat.getDrawable(activity,R.drawable.btn_bg_transparent) + } else { + ContextCompat.getDrawable(activity, R.drawable.btn_bg_transparent) } ) when(btn) { @@ -1501,7 +1528,7 @@ class ColumnViewHolder( is TextView -> btn.textColor = colorFg } } - }else { + } else { val colorBg = column.getHeaderBackgroundColor() val colorFg = column.getHeaderNameColor() val colorBgSelected = Color.rgb( @@ -1511,7 +1538,7 @@ class ColumnViewHolder( ) svQuickFilter.setBackgroundColor(colorBg) - showQuickFilterButton = { btn , iconId , selected -> + showQuickFilterButton = { btn, iconId, selected -> ViewCompat.setBackground( btn, diff --git a/app/src/main/java/jp/juggler/subwaytooter/DlgContextMenu.kt b/app/src/main/java/jp/juggler/subwaytooter/DlgContextMenu.kt index b802eb13..021406a5 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/DlgContextMenu.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/DlgContextMenu.kt @@ -118,6 +118,8 @@ internal class DlgContextMenu( val btnAroundFTL : View = viewRoot.findViewById(R.id.btnAroundFTL) val btnCopyAccountId : Button = viewRoot.findViewById(R.id.btnCopyAccountId) val btnOpenAccountInAdminWebUi :Button = viewRoot.findViewById(R.id.btnOpenAccountInAdminWebUi) + val btnOpenInstanceInAdminWebUi :Button = viewRoot.findViewById(R.id.btnOpenInstanceInAdminWebUi) + val llLinks : LinearLayout = viewRoot.findViewById(R.id.llLinks) btnAroundAccountTL.setOnClickListener(this) @@ -163,6 +165,7 @@ internal class DlgContextMenu( btnEndorse.setOnClickListener(this) btnCopyAccountId.setOnClickListener(this) btnOpenAccountInAdminWebUi.setOnClickListener(this) + btnOpenInstanceInAdminWebUi.setOnClickListener(this) viewRoot.findViewById(R.id.btnQuoteUrlStatus).setOnClickListener(this) viewRoot.findViewById(R.id.btnQuoteUrlAccount).setOnClickListener(this) @@ -357,6 +360,7 @@ internal class DlgContextMenu( btnDomainBlock.visibility = View.GONE btnCopyAccountId.visibility = View.GONE btnOpenAccountInAdminWebUi.visibility = View.GONE + btnOpenInstanceInAdminWebUi.visibility = View.GONE } else { val who_host = who.host btnInstanceInformation.visibility = View.VISIBLE @@ -375,7 +379,7 @@ internal class DlgContextMenu( btnCopyAccountId.text = activity.getString(R.string.copy_account_id, who.id.toString() ) vg( btnOpenAccountInAdminWebUi , ! access_info.isPseudo) - + vg( btnOpenInstanceInAdminWebUi , ! access_info.isPseudo) } viewRoot.findViewById(R.id.btnAccountText).setOnClickListener(this) @@ -761,7 +765,11 @@ internal class DlgContextMenu( R.id.btnCopyAccountId -> who.id.toString().copyToClipboard(activity) - R.id.btnOpenAccountInAdminWebUi -> App1.openBrowser(activity,"https://${access_info.host}/admin/accounts/${who.id}") + R.id.btnOpenAccountInAdminWebUi -> + App1.openBrowser(activity,"https://${access_info.host}/admin/accounts/${who.id}") + + R.id.btnOpenInstanceInAdminWebUi -> + App1.openBrowser(activity,"https://${access_info.host}/admin/instances/${who.host}") } } diff --git a/app/src/main/java/jp/juggler/subwaytooter/Pref.kt b/app/src/main/java/jp/juggler/subwaytooter/Pref.kt index ecf4b023..4482667d 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/Pref.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/Pref.kt @@ -424,6 +424,7 @@ object Pref { val spNotificationTlIconSize = StringPref("notification_tl_icon_size", "32") val spBoostButtonSize = StringPref("BoostButtonSize", "35") val spReplyIconSize = StringPref("ReplyIconSize", "24") + val spHeaderIconSize = StringPref("HeaderIconSize", "32") val spMediaSizeMax = StringPref("max_media_size", "8") val spMovieSizeMax = StringPref("max_movie_size", "40") val spTimelineFont = StringPref("timeline_font", "", skipImport = true) @@ -447,8 +448,10 @@ object Pref { val fpTimelineFontSize = FloatPref("timeline_font_size", Float.NaN) val fpAcctFontSize = FloatPref("acct_font_size", Float.NaN) val fpNotificationTlFontSize = FloatPref("notification_tl_font_size", Float.NaN) + val fpHeaderTextSize = FloatPref("HeaderTextSize", Float.NaN) internal const val default_timeline_font_size = 14f internal const val default_acct_font_size = 12f internal const val default_notification_tl_font_size = 14f + internal const val default_header_font_size = 14f } diff --git a/app/src/main/res/layout/act_app_setting_appearance.xml b/app/src/main/res/layout/act_app_setting_appearance.xml index 87834f43..5e0fcc3a 100644 --- a/app/src/main/res/layout/act_app_setting_appearance.xml +++ b/app/src/main/res/layout/act_app_setting_appearance.xml @@ -476,6 +476,45 @@ + + + + + + + + + + + + + + + + + + + + + +