fix #135, マストドン3.1で追加されたフィルタカテゴリに対応

This commit is contained in:
tateisu 2020-04-07 15:45:09 +09:00
parent 7ea383f876
commit 850af70e4c
6 changed files with 27 additions and 4 deletions

View File

@ -63,6 +63,8 @@ class ActKeywordFilter
private lateinit var cbContextNotification : CheckBox
private lateinit var cbContextPublic : CheckBox
private lateinit var cbContextThread : CheckBox
private lateinit var cbContextProfile : CheckBox
private lateinit var cbFilterIrreversible : CheckBox
private lateinit var cbFilterWordMatch : CheckBox
private lateinit var tvExpire : TextView
@ -133,6 +135,7 @@ class ActKeywordFilter
cbContextNotification = findViewById(R.id.cbContextNotification)
cbContextPublic = findViewById(R.id.cbContextPublic)
cbContextThread = findViewById(R.id.cbContextThread)
cbContextProfile = findViewById(R.id.cbContextProfile)
cbFilterIrreversible = findViewById(R.id.cbFilterIrreversible)
cbFilterWordMatch = findViewById(R.id.cbFilterWordMatch)
tvExpire = findViewById(R.id.tvExpire)
@ -193,6 +196,7 @@ class ActKeywordFilter
setContextChecked(filter, cbContextNotification, TootFilter.CONTEXT_NOTIFICATIONS)
setContextChecked(filter, cbContextPublic, TootFilter.CONTEXT_PUBLIC)
setContextChecked(filter, cbContextThread, TootFilter.CONTEXT_THREAD)
setContextChecked(filter, cbContextProfile, TootFilter.CONTEXT_PROFILE)
cbFilterIrreversible.isChecked = filter.irreversible
cbFilterWordMatch.isChecked = filter.whole_word
@ -230,6 +234,8 @@ class ActKeywordFilter
putContextChecked(cbContextNotification, "notifications")
putContextChecked(cbContextPublic, "public")
putContextChecked(cbContextThread, "thread")
putContextChecked(cbContextProfile, "account")
})
put("irreversible", cbFilterIrreversible.isChecked)

View File

@ -2284,9 +2284,12 @@ class Column(
ColumnType.HOME, ColumnType.LIST_TL, ColumnType.MISSKEY_HYBRID -> TootFilter.CONTEXT_HOME
ColumnType.NOTIFICATIONS, ColumnType.NOTIFICATION_FROM_ACCT -> TootFilter.CONTEXT_NOTIFICATIONS
ColumnType.CONVERSATION -> TootFilter.CONTEXT_THREAD
ColumnType.LOCAL, ColumnType.DOMAIN_TIMELINE, ColumnType.FEDERATE, ColumnType.HASHTAG, ColumnType.HASHTAG_FROM_ACCT, ColumnType.PROFILE, ColumnType.SEARCH -> TootFilter.CONTEXT_PUBLIC
ColumnType.DIRECT_MESSAGES -> TootFilter.CONTEXT_PUBLIC
ColumnType.DIRECT_MESSAGES -> TootFilter.CONTEXT_THREAD
ColumnType.PROFILE -> TootFilter.CONTEXT_PROFILE
else -> TootFilter.CONTEXT_PUBLIC
// ColumnType.MISSKEY_HYBRID や ColumnType.MISSKEY_ANTENNA_TL はHOMEでもPUBLICでもある…

View File

@ -12,18 +12,20 @@ class TootFilter(src : JsonObject) : TimelineItem() {
val log = LogCategory("TootFilter")
@Suppress("unused")
const val CONTEXT_ALL = 15
const val CONTEXT_ALL = 31
const val CONTEXT_NONE = 0
const val CONTEXT_HOME = 1
const val CONTEXT_NOTIFICATIONS = 2
const val CONTEXT_PUBLIC = 4
const val CONTEXT_THREAD = 8
const val CONTEXT_PROFILE = 16
private val CONTEXT_LIST = arrayOf(
FilterContext("home", CONTEXT_HOME, R.string.filter_home),
FilterContext("notifications", CONTEXT_NOTIFICATIONS, R.string.filter_notification),
FilterContext("public", CONTEXT_PUBLIC, R.string.filter_public),
FilterContext("thread", CONTEXT_THREAD, R.string.filter_thread)
FilterContext("thread", CONTEXT_THREAD, R.string.filter_thread),
FilterContext("account", CONTEXT_PROFILE, R.string.filter_profile)
)
private val CONTEXT_MAP = CONTEXT_LIST.map { Pair(it.name, it) }.toMap()

View File

@ -86,6 +86,16 @@
</LinearLayout>
<LinearLayout style="@style/setting_row_form">
<CheckBox
android:id="@+id/cbContextProfile"
style="@style/setting_horizontal_stretch"
android:checked="true"
android:text="@string/filter_profile" />
</LinearLayout>
<View style="@style/setting_divider" />
<TextView

View File

@ -320,6 +320,7 @@
<string name="filter_phrase">フレーズ</string>
<string name="filter_public">公開TL</string>
<string name="filter_thread">会話</string>
<string name="filter_profile">プロファイル</string>
<string name="filter_word_match">単語マッチ</string>
<string name="filter_word_match_long">単語マッチ。英数字だけで構成されるフレーズ以外では無効にすることを推奨します。</string>
<string name="filtered">フィルタされました</string>

View File

@ -718,6 +718,7 @@
<string name="filter_notification">notification</string>
<string name="filter_public">public</string>
<string name="filter_thread">conversation</string>
<string name="filter_profile">profile</string>
<string name="dont_change">Don\'t change</string>
<string name="filter_expire_unlimited">Unlimited</string>
<string name="filter_expire_30min">30 minutes after saving</string>