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