diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActLanguageFilter.kt b/app/src/main/java/jp/juggler/subwaytooter/ActLanguageFilter.kt index b6fcae0e..f4ec7c86 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ActLanguageFilter.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ActLanguageFilter.kt @@ -122,7 +122,7 @@ class ActLanguageFilter : AppCompatActivity(), View.OnClickListener { column_index = intent.getIntExtra(EXTRA_COLUMN_INDEX, 0) column = app_state.column_list[column_index] - load(column.language_filter ?: JSONObject()) + load(column.language_filter ) } private fun initUI() { @@ -144,13 +144,15 @@ class ActLanguageFilter : AppCompatActivity(), View.OnClickListener { listView.onItemClickListener = adapter } - private fun load(src : JSONObject) { + private fun load(src : JSONObject?) { loading_busy = true try { languageList.clear() - for(key in src.keys()) { - languageList.add(MyItem(key, src.parseBoolean(key) ?: true)) + if(src !=null) { + for(key in src.keys()) { + languageList.add(MyItem(key, src.parseBoolean(key) ?: true)) + } } if(null == languageList.find { it.code == TootStatus.LANGUAGE_CODE_DEFAULT }) { languageList.add(MyItem(TootStatus.LANGUAGE_CODE_DEFAULT, true)) diff --git a/app/src/main/java/jp/juggler/subwaytooter/Column.kt b/app/src/main/java/jp/juggler/subwaytooter/Column.kt index 4bf2a040..a169c76d 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/Column.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/Column.kt @@ -1483,13 +1483,7 @@ class Column( if(column_regex_filter(status.decoded_spoiler_text)) return true if(column_regex_filter(reblog?.decoded_spoiler_text)) return true - val languageFilter = language_filter - if(languageFilter != null ){ - val bShow = languageFilter.parseBoolean(status.language ?: reblog?.language ?:TootStatus.LANGUAGE_CODE_UNKNOWN) - ?: languageFilter.parseBoolean(TootStatus.LANGUAGE_CODE_DEFAULT) - ?: true - if(!bShow) return true - } + if(checkLanguageFilter(status)) return true if(access_info.isPseudo) { var r = UserRelation.loadPseudo(access_info.getFullAcct(status.account)) @@ -1503,6 +1497,19 @@ class Column( return status.checkMuted() } + // true if the status will be hidden + private fun checkLanguageFilter(status : TootStatus?) : Boolean { + status?:return false + val languageFilter = language_filter ?: return false + + val allow = languageFilter.parseBoolean(status.language ?: status.reblog?.language ?:TootStatus.LANGUAGE_CODE_UNKNOWN) + ?: languageFilter.parseBoolean(TootStatus.LANGUAGE_CODE_DEFAULT) + ?: true + + return !allow + + } + internal fun isFiltered(item : TootNotification) : Boolean { if(when(quick_filter) { @@ -1556,15 +1563,7 @@ class Column( // just update _filtered flag for reversible filter status.updateKeywordFilteredFlag(access_info, filterTrees) } - if( status != null){ - val languageFilter = language_filter - if(languageFilter != null ){ - val bShow = languageFilter.parseBoolean(status.language ?: status.reblog?.language ?:TootStatus.LANGUAGE_CODE_UNKNOWN) - ?: languageFilter.parseBoolean(TootStatus.LANGUAGE_CODE_DEFAULT) - ?: true - if(!bShow) return true - } - } + if( checkLanguageFilter(status) )return true if(status?.checkMuted() == true) { log.d("isFiltered: status muted by in-app muted words.") diff --git a/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt b/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt index bb1190b6..926890df 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt @@ -1365,17 +1365,41 @@ internal class ItemViewHolder( makeReactionsView(status) buttons_for_status?.bind(status, (item as? TootNotification)) + + var sb :StringBuilder? = null + + fun prepareSb() :StringBuilder{ + var x = sb + if( x == null){ + x = StringBuilder() + sb = x + }else{ + x.append(", ") + } + return x + } + + val language = status.language + if( language != null && + (column.type == ColumnType.CONVERSATION || Pref.bpShowLanguage(activity.pref)) + ){ + prepareSb().append(activity.getString(R.string.language_is,language)) + } val application = status.application - if(application != null - && (column.type == ColumnType.CONVERSATION || Pref.bpShowAppName(activity.pref)) + if(application != null && + (column.type == ColumnType.CONVERSATION || Pref.bpShowAppName(activity.pref)) ) { + prepareSb().append(activity.getString(R.string.application_is, application.name ?: "")) + } + + if(sb != null) { tvApplication.visibility = View.VISIBLE - tvApplication.text = - activity.getString(R.string.application_is, application.name ?: "") - } else { + tvApplication.text = sb + }else{ tvApplication.visibility = View.GONE } + } private fun showInstanceTicker(who : TootAccount) { diff --git a/app/src/main/java/jp/juggler/subwaytooter/Pref.kt b/app/src/main/java/jp/juggler/subwaytooter/Pref.kt index 89be8c40..d62797fe 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/Pref.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/Pref.kt @@ -302,7 +302,11 @@ object Pref { false, R.id.swShowAppName ) - + val bpShowLanguage = BooleanPref( + "ShowLanguage", + false, + R.id.swShowLanguage + ) val bpForceGap = BooleanPref( "force_gap", false, 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 3ab004a5..91204143 100644 --- a/app/src/main/res/layout/act_app_setting_appearance.xml +++ b/app/src/main/res/layout/act_app_setting_appearance.xml @@ -158,6 +158,24 @@ + + + + + + + + + + + アプリはミュートされます 見た目 添付メディアのURLを本文に記載する - アプリ: %1$s + アプリ: %1$s 毎回尋ねる 添付メディアの説明文 添付メディアのアップロード中は説明文を設定できません @@ -994,5 +994,7 @@ プリセット カスタム プリセットを選択または言語コードを入力 + 言語: %1$s + 常に言語を表示する diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index abb5e72a..94bb4d6a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -988,4 +988,6 @@ Presets Custom choose preset or input language code + lang: %1$s + Always show language \ No newline at end of file