DMカラムの設定に「古いAPIを使う」を追加。2.6.0の新しいAPIは古いデータを読めないのです
This commit is contained in:
parent
146d118f2e
commit
906be16138
|
@ -29,7 +29,7 @@
|
||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|
|
@ -151,6 +151,7 @@ class Column(
|
||||||
private const val KEY_INSTANCE_LOCAL = "instance_local"
|
private const val KEY_INSTANCE_LOCAL = "instance_local"
|
||||||
|
|
||||||
private const val KEY_ENABLE_SPEECH = "enable_speech"
|
private const val KEY_ENABLE_SPEECH = "enable_speech"
|
||||||
|
private const val KEY_USE_OLD_API = "use_old_api"
|
||||||
private const val KEY_LAST_VIEWING_ITEM = "lastViewingItem"
|
private const val KEY_LAST_VIEWING_ITEM = "lastViewingItem"
|
||||||
|
|
||||||
private const val KEY_REGEX_TEXT = "regex_text"
|
private const val KEY_REGEX_TEXT = "regex_text"
|
||||||
|
@ -518,7 +519,8 @@ class Column(
|
||||||
internal var system_notification_not_related : Boolean = false
|
internal var system_notification_not_related : Boolean = false
|
||||||
internal var instance_local : Boolean = false
|
internal var instance_local : Boolean = false
|
||||||
|
|
||||||
var enable_speech : Boolean = false
|
internal var enable_speech : Boolean = false
|
||||||
|
internal var use_old_api = false
|
||||||
|
|
||||||
internal var regex_text : String = ""
|
internal var regex_text : String = ""
|
||||||
|
|
||||||
|
@ -718,6 +720,7 @@ class Column(
|
||||||
instance_local = src.optBoolean(KEY_INSTANCE_LOCAL)
|
instance_local = src.optBoolean(KEY_INSTANCE_LOCAL)
|
||||||
|
|
||||||
enable_speech = src.optBoolean(KEY_ENABLE_SPEECH)
|
enable_speech = src.optBoolean(KEY_ENABLE_SPEECH)
|
||||||
|
use_old_api = src.optBoolean(KEY_USE_OLD_API)
|
||||||
last_viewing_item_id = EntityId.from(src, KEY_LAST_VIEWING_ITEM)
|
last_viewing_item_id = EntityId.from(src, KEY_LAST_VIEWING_ITEM)
|
||||||
|
|
||||||
regex_text = src.parseString(KEY_REGEX_TEXT) ?: ""
|
regex_text = src.parseString(KEY_REGEX_TEXT) ?: ""
|
||||||
|
@ -766,28 +769,34 @@ class Column(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun JSONObject.putIfTrue(key:String,value:Boolean){
|
||||||
|
if(value) put( key,true)
|
||||||
|
}
|
||||||
|
|
||||||
@Throws(JSONException::class)
|
@Throws(JSONException::class)
|
||||||
fun encodeJSON(dst : JSONObject, old_index : Int) {
|
fun encodeJSON(dst : JSONObject, old_index : Int) {
|
||||||
dst.put(KEY_ACCOUNT_ROW_ID, access_info.db_id)
|
dst.put(KEY_ACCOUNT_ROW_ID, access_info.db_id)
|
||||||
dst.put(KEY_TYPE, column_type)
|
dst.put(KEY_TYPE, column_type)
|
||||||
dst.put(KEY_COLUMN_ID, column_id)
|
dst.put(KEY_COLUMN_ID, column_id)
|
||||||
dst.put(KEY_DONT_CLOSE, dont_close)
|
|
||||||
dst.put(KEY_WITH_ATTACHMENT, with_attachment)
|
|
||||||
dst.put(KEY_WITH_HIGHLIGHT, with_highlight)
|
|
||||||
dst.put(KEY_DONT_SHOW_BOOST, dont_show_boost)
|
|
||||||
dst.put(KEY_DONT_SHOW_FOLLOW, dont_show_follow)
|
|
||||||
dst.put(KEY_DONT_SHOW_FAVOURITE, dont_show_favourite)
|
|
||||||
dst.put(KEY_DONT_SHOW_REPLY, dont_show_reply)
|
|
||||||
dst.put(KEY_DONT_SHOW_REACTION, dont_show_reaction)
|
|
||||||
dst.put(KEY_DONT_SHOW_VOTE, dont_show_vote)
|
|
||||||
dst.put(KEY_DONT_SHOW_NORMAL_TOOT, dont_show_normal_toot)
|
|
||||||
dst.put(KEY_DONT_STREAMING, dont_streaming)
|
|
||||||
dst.put(KEY_DONT_AUTO_REFRESH, dont_auto_refresh)
|
|
||||||
dst.put(KEY_HIDE_MEDIA_DEFAULT, hide_media_default)
|
|
||||||
dst.put(KEY_SYSTEM_NOTIFICATION_NOT_RELATED, system_notification_not_related)
|
|
||||||
dst.put(KEY_INSTANCE_LOCAL, instance_local)
|
|
||||||
|
|
||||||
dst.put(KEY_ENABLE_SPEECH, enable_speech)
|
dst.putIfTrue(KEY_DONT_CLOSE, dont_close)
|
||||||
|
dst.putIfTrue(KEY_WITH_ATTACHMENT, with_attachment)
|
||||||
|
dst.putIfTrue(KEY_WITH_HIGHLIGHT, with_highlight)
|
||||||
|
dst.putIfTrue(KEY_DONT_SHOW_BOOST, dont_show_boost)
|
||||||
|
dst.putIfTrue(KEY_DONT_SHOW_FOLLOW, dont_show_follow)
|
||||||
|
dst.putIfTrue(KEY_DONT_SHOW_FAVOURITE, dont_show_favourite)
|
||||||
|
dst.putIfTrue(KEY_DONT_SHOW_REPLY, dont_show_reply)
|
||||||
|
dst.putIfTrue(KEY_DONT_SHOW_REACTION, dont_show_reaction)
|
||||||
|
dst.putIfTrue(KEY_DONT_SHOW_VOTE, dont_show_vote)
|
||||||
|
dst.putIfTrue(KEY_DONT_SHOW_NORMAL_TOOT, dont_show_normal_toot)
|
||||||
|
dst.putIfTrue(KEY_DONT_STREAMING, dont_streaming)
|
||||||
|
dst.putIfTrue(KEY_DONT_AUTO_REFRESH, dont_auto_refresh)
|
||||||
|
dst.putIfTrue(KEY_HIDE_MEDIA_DEFAULT, hide_media_default)
|
||||||
|
dst.putIfTrue(KEY_SYSTEM_NOTIFICATION_NOT_RELATED, system_notification_not_related)
|
||||||
|
dst.putIfTrue(KEY_INSTANCE_LOCAL, instance_local)
|
||||||
|
dst.putIfTrue(KEY_ENABLE_SPEECH, enable_speech)
|
||||||
|
dst.putIfTrue(KEY_USE_OLD_API, use_old_api)
|
||||||
|
|
||||||
last_viewing_item_id?.putTo(dst, KEY_LAST_VIEWING_ITEM)
|
last_viewing_item_id?.putTo(dst, KEY_LAST_VIEWING_ITEM)
|
||||||
|
|
||||||
dst.put(KEY_REGEX_TEXT, regex_text)
|
dst.put(KEY_REGEX_TEXT, regex_text)
|
||||||
|
@ -1745,7 +1754,11 @@ class Column(
|
||||||
env.update(client, parser)
|
env.update(client, parser)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var useConversationSummarys = false
|
// DMカラム更新時に新APIの利用に成功したなら真
|
||||||
|
internal var useConversationSummarys = false
|
||||||
|
|
||||||
|
// DMカラムのストリーミングイベントで新形式のイベントを利用できたなら真
|
||||||
|
internal var useConversationSummaryStreaming = false
|
||||||
|
|
||||||
internal fun startLoading() {
|
internal fun startLoading() {
|
||||||
cancelLastTask()
|
cancelLastTask()
|
||||||
|
@ -2418,24 +2431,26 @@ class Column(
|
||||||
|
|
||||||
TYPE_DIRECT_MESSAGES -> {
|
TYPE_DIRECT_MESSAGES -> {
|
||||||
|
|
||||||
// try 2.6.0 new API https://github.com/tootsuite/mastodon/pull/8832
|
useConversationSummarys = false
|
||||||
val result = getConversationSummary(client, PATH_DIRECT_MESSAGES2)
|
if(! use_old_api){
|
||||||
return when {
|
|
||||||
|
// try 2.6.0 new API https://github.com/tootsuite/mastodon/pull/8832
|
||||||
// cancelled
|
val result = getConversationSummary(client, PATH_DIRECT_MESSAGES2)
|
||||||
result == null -> null
|
|
||||||
|
when{
|
||||||
// not error
|
// cancelled
|
||||||
result.error.isNullOrBlank() -> {
|
result == null -> return null
|
||||||
useConversationSummarys = true
|
|
||||||
result
|
// not error
|
||||||
}
|
result.error.isNullOrBlank() -> {
|
||||||
|
useConversationSummarys = true
|
||||||
else -> {
|
return result
|
||||||
// fallback to old api
|
}
|
||||||
getStatuses(client, PATH_DIRECT_MESSAGES)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fallback to old api
|
||||||
|
return getStatuses(client, PATH_DIRECT_MESSAGES)
|
||||||
}
|
}
|
||||||
|
|
||||||
TYPE_LOCAL -> return getStatuses(client, makePublicLocalUrl())
|
TYPE_LOCAL -> return getStatuses(client, makePublicLocalUrl())
|
||||||
|
@ -6002,18 +6017,27 @@ class Column(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onTimelineItem(item : TimelineItem) {
|
override fun onTimelineItem(item : TimelineItem) {
|
||||||
if(is_dispose.get()) return
|
if(is_dispose.get()) return
|
||||||
|
|
||||||
if(item is TootConversationSummary) {
|
if(item is TootConversationSummary) {
|
||||||
if(column_type != TYPE_DIRECT_MESSAGES) return
|
if(column_type != TYPE_DIRECT_MESSAGES) return
|
||||||
if(isFiltered(item.last_status)) return
|
if(isFiltered(item.last_status)) return
|
||||||
|
if( use_old_api ){
|
||||||
|
useConversationSummaryStreaming = false
|
||||||
|
return
|
||||||
|
}else{
|
||||||
|
useConversationSummaryStreaming = true
|
||||||
|
}
|
||||||
}else if(item is TootNotification) {
|
}else if(item is TootNotification) {
|
||||||
if(column_type != TYPE_NOTIFICATIONS) return
|
if(column_type != TYPE_NOTIFICATIONS) return
|
||||||
if(isFiltered(item)) return
|
if(isFiltered(item)) return
|
||||||
} else if(item is TootStatus) {
|
} else if(item is TootStatus) {
|
||||||
if(column_type == TYPE_NOTIFICATIONS) return
|
if(column_type == TYPE_NOTIFICATIONS) return
|
||||||
if(useConversationSummarys) return
|
|
||||||
|
// マストドン2.6.0形式のDMカラム用イベントを利用したならば、その直後に発生する普通の投稿イベントを無視する
|
||||||
|
if( useConversationSummaryStreaming ) return
|
||||||
|
|
||||||
if(column_type == TYPE_LOCAL && ! isMisskey && item.account.acct.indexOf('@') != - 1) return
|
if(column_type == TYPE_LOCAL && ! isMisskey && item.account.acct.indexOf('@') != - 1) return
|
||||||
if(isFiltered(item)) return
|
if(isFiltered(item)) return
|
||||||
|
|
|
@ -104,6 +104,7 @@ class ColumnViewHolder(
|
||||||
private val cbHideMediaDefault : CheckBox
|
private val cbHideMediaDefault : CheckBox
|
||||||
private val cbSystemNotificationNotRelated : CheckBox
|
private val cbSystemNotificationNotRelated : CheckBox
|
||||||
private val cbEnableSpeech : CheckBox
|
private val cbEnableSpeech : CheckBox
|
||||||
|
private val cbOldApi : CheckBox
|
||||||
private val llRegexFilter : View
|
private val llRegexFilter : View
|
||||||
private val btnDeleteNotification : Button
|
private val btnDeleteNotification : Button
|
||||||
|
|
||||||
|
@ -194,7 +195,7 @@ class ColumnViewHolder(
|
||||||
listView = viewRoot.findViewById(R.id.listView)
|
listView = viewRoot.findViewById(R.id.listView)
|
||||||
|
|
||||||
if(Pref.bpShareViewPool(activity.pref)) {
|
if(Pref.bpShareViewPool(activity.pref)) {
|
||||||
listView.setRecycledViewPool( activity.viewPool)
|
listView.setRecycledViewPool(activity.viewPool)
|
||||||
}
|
}
|
||||||
listView.itemAnimator = null
|
listView.itemAnimator = null
|
||||||
//
|
//
|
||||||
|
@ -241,6 +242,7 @@ class ColumnViewHolder(
|
||||||
cbHideMediaDefault = viewRoot.findViewById(R.id.cbHideMediaDefault)
|
cbHideMediaDefault = viewRoot.findViewById(R.id.cbHideMediaDefault)
|
||||||
cbSystemNotificationNotRelated = viewRoot.findViewById(R.id.cbSystemNotificationNotRelated)
|
cbSystemNotificationNotRelated = viewRoot.findViewById(R.id.cbSystemNotificationNotRelated)
|
||||||
cbEnableSpeech = viewRoot.findViewById(R.id.cbEnableSpeech)
|
cbEnableSpeech = viewRoot.findViewById(R.id.cbEnableSpeech)
|
||||||
|
cbOldApi = viewRoot.findViewById(R.id.cbOldApi)
|
||||||
etRegexFilter = viewRoot.findViewById(R.id.etRegexFilter)
|
etRegexFilter = viewRoot.findViewById(R.id.etRegexFilter)
|
||||||
llRegexFilter = viewRoot.findViewById(R.id.llRegexFilter)
|
llRegexFilter = viewRoot.findViewById(R.id.llRegexFilter)
|
||||||
tvRegexFilterError = viewRoot.findViewById(R.id.tvRegexFilterError)
|
tvRegexFilterError = viewRoot.findViewById(R.id.tvRegexFilterError)
|
||||||
|
@ -276,6 +278,7 @@ class ColumnViewHolder(
|
||||||
cbHideMediaDefault.setOnCheckedChangeListener(this)
|
cbHideMediaDefault.setOnCheckedChangeListener(this)
|
||||||
cbSystemNotificationNotRelated.setOnCheckedChangeListener(this)
|
cbSystemNotificationNotRelated.setOnCheckedChangeListener(this)
|
||||||
cbEnableSpeech.setOnCheckedChangeListener(this)
|
cbEnableSpeech.setOnCheckedChangeListener(this)
|
||||||
|
cbOldApi.setOnCheckedChangeListener(this)
|
||||||
|
|
||||||
// 入力の追跡
|
// 入力の追跡
|
||||||
etRegexFilter.addTextChangedListener(object : TextWatcher {
|
etRegexFilter.addTextChangedListener(object : TextWatcher {
|
||||||
|
@ -355,25 +358,25 @@ class ColumnViewHolder(
|
||||||
|
|
||||||
//復元後にもここを通るがこれは正常である
|
//復元後にもここを通るがこれは正常である
|
||||||
val sp = column.scroll_save
|
val sp = column.scroll_save
|
||||||
if(sp==null) {
|
if(sp == null) {
|
||||||
// val lvi = column.last_viewing_item_id
|
// val lvi = column.last_viewing_item_id
|
||||||
// if( lvi != null ){
|
// if( lvi != null ){
|
||||||
// column.last_viewing_item_id = null
|
// column.last_viewing_item_id = null
|
||||||
// val listIndex = column.findListIndexByTimelineId(lvi)
|
// val listIndex = column.findListIndexByTimelineId(lvi)
|
||||||
// if( listIndex != null){
|
// if( listIndex != null){
|
||||||
// log.d(
|
// log.d(
|
||||||
// "restoreScrollPosition [$page_idx] %s , restore from last_viewing_item_id %d"
|
// "restoreScrollPosition [$page_idx] %s , restore from last_viewing_item_id %d"
|
||||||
// , column.getColumnName( true )
|
// , column.getColumnName( true )
|
||||||
// ,listIndex
|
// ,listIndex
|
||||||
// )
|
// )
|
||||||
// ScrollPosition(column.toAdapterIndex(listIndex),0).restore(this@ColumnViewHolder)
|
// ScrollPosition(column.toAdapterIndex(listIndex),0).restore(this@ColumnViewHolder)
|
||||||
// return
|
// return
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
log.d(
|
log.d(
|
||||||
"restoreScrollPosition [$page_idx] %s , column has no saved scroll position."
|
"restoreScrollPosition [$page_idx] %s , column has no saved scroll position."
|
||||||
, column.getColumnName( true )
|
, column.getColumnName(true)
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -383,17 +386,17 @@ class ColumnViewHolder(
|
||||||
if(listView.visibility != View.VISIBLE) {
|
if(listView.visibility != View.VISIBLE) {
|
||||||
log.d(
|
log.d(
|
||||||
"restoreScrollPosition [$page_idx] %s , listView is not visible. saved position %s,%s is dropped."
|
"restoreScrollPosition [$page_idx] %s , listView is not visible. saved position %s,%s is dropped."
|
||||||
,column.getColumnName(true)
|
, column.getColumnName(true)
|
||||||
,sp.adapterIndex
|
, sp.adapterIndex
|
||||||
,sp.offset
|
, sp.offset
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
log.d(
|
log.d(
|
||||||
"restoreScrollPosition [%d] %s , listView is visible. resume %s,%s"
|
"restoreScrollPosition [%d] %s , listView is visible. resume %s,%s"
|
||||||
,page_idx
|
, page_idx
|
||||||
,column.getColumnName(true)
|
, column.getColumnName(true)
|
||||||
,sp.adapterIndex
|
, sp.adapterIndex
|
||||||
,sp.offset
|
, sp.offset
|
||||||
)
|
)
|
||||||
sp.restore(this@ColumnViewHolder)
|
sp.restore(this@ColumnViewHolder)
|
||||||
}
|
}
|
||||||
|
@ -462,6 +465,7 @@ class ColumnViewHolder(
|
||||||
cbHideMediaDefault.isChecked = column.hide_media_default
|
cbHideMediaDefault.isChecked = column.hide_media_default
|
||||||
cbSystemNotificationNotRelated.isChecked = column.system_notification_not_related
|
cbSystemNotificationNotRelated.isChecked = column.system_notification_not_related
|
||||||
cbEnableSpeech.isChecked = column.enable_speech
|
cbEnableSpeech.isChecked = column.enable_speech
|
||||||
|
cbOldApi.isChecked = column.use_old_api
|
||||||
|
|
||||||
etRegexFilter.setText(column.regex_text)
|
etRegexFilter.setText(column.regex_text)
|
||||||
etSearch.setText(column.search_query)
|
etSearch.setText(column.search_query)
|
||||||
|
@ -488,6 +492,8 @@ class ColumnViewHolder(
|
||||||
vg(cbHideMediaDefault, column.canNSFWDefault())
|
vg(cbHideMediaDefault, column.canNSFWDefault())
|
||||||
vg(cbSystemNotificationNotRelated, column.column_type == Column.TYPE_NOTIFICATIONS)
|
vg(cbSystemNotificationNotRelated, column.column_type == Column.TYPE_NOTIFICATIONS)
|
||||||
vg(cbEnableSpeech, column.canSpeech())
|
vg(cbEnableSpeech, column.canSpeech())
|
||||||
|
vg(cbOldApi, column.column_type == Column.TYPE_DIRECT_MESSAGES)
|
||||||
|
|
||||||
|
|
||||||
vg(btnDeleteNotification, column.column_type == Column.TYPE_NOTIFICATIONS)
|
vg(btnDeleteNotification, column.column_type == Column.TYPE_NOTIFICATIONS)
|
||||||
vg(llSearch, column.isSearchColumn)
|
vg(llSearch, column.isSearchColumn)
|
||||||
|
@ -503,11 +509,11 @@ class ColumnViewHolder(
|
||||||
val canRefreshBottom = column.canRefreshBottomBySwipe()
|
val canRefreshBottom = column.canRefreshBottomBySwipe()
|
||||||
|
|
||||||
refreshLayout.isEnabled = canRefreshTop || canRefreshBottom
|
refreshLayout.isEnabled = canRefreshTop || canRefreshBottom
|
||||||
refreshLayout.direction = if( canRefreshTop && canRefreshBottom) {
|
refreshLayout.direction = if(canRefreshTop && canRefreshBottom) {
|
||||||
SwipyRefreshLayoutDirection.BOTH
|
SwipyRefreshLayoutDirection.BOTH
|
||||||
}else if( canRefreshTop){
|
} else if(canRefreshTop) {
|
||||||
SwipyRefreshLayoutDirection.TOP
|
SwipyRefreshLayoutDirection.TOP
|
||||||
}else{
|
} else {
|
||||||
SwipyRefreshLayoutDirection.BOTTOM
|
SwipyRefreshLayoutDirection.BOTTOM
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -760,7 +766,7 @@ class ColumnViewHolder(
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
column.startRefresh(false, direction == SwipyRefreshLayoutDirection.BOTTOM )
|
column.startRefresh(false, direction == SwipyRefreshLayoutDirection.BOTTOM)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCheckedChanged(view : CompoundButton, isChecked : Boolean) {
|
override fun onCheckedChanged(view : CompoundButton, isChecked : Boolean) {
|
||||||
|
@ -803,19 +809,19 @@ class ColumnViewHolder(
|
||||||
activity.app_state.saveColumnList()
|
activity.app_state.saveColumnList()
|
||||||
column.startLoading()
|
column.startLoading()
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.cbDontShowReaction -> {
|
R.id.cbDontShowReaction -> {
|
||||||
column.dont_show_reaction = isChecked
|
column.dont_show_reaction = isChecked
|
||||||
activity.app_state.saveColumnList()
|
activity.app_state.saveColumnList()
|
||||||
column.startLoading()
|
column.startLoading()
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.cbDontShowVote -> {
|
R.id.cbDontShowVote -> {
|
||||||
column.dont_show_vote = isChecked
|
column.dont_show_vote = isChecked
|
||||||
activity.app_state.saveColumnList()
|
activity.app_state.saveColumnList()
|
||||||
column.startLoading()
|
column.startLoading()
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.cbDontShowNormalToot -> {
|
R.id.cbDontShowNormalToot -> {
|
||||||
column.dont_show_normal_toot = isChecked
|
column.dont_show_normal_toot = isChecked
|
||||||
activity.app_state.saveColumnList()
|
activity.app_state.saveColumnList()
|
||||||
|
@ -870,6 +876,12 @@ class ColumnViewHolder(
|
||||||
column.enable_speech = isChecked
|
column.enable_speech = isChecked
|
||||||
activity.app_state.saveColumnList()
|
activity.app_state.saveColumnList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
R.id.cbOldApi -> {
|
||||||
|
column.use_old_api = isChecked
|
||||||
|
activity.app_state.saveColumnList()
|
||||||
|
column.startLoading()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -883,7 +895,7 @@ class ColumnViewHolder(
|
||||||
column.addColumnViewHolder(this)
|
column.addColumnViewHolder(this)
|
||||||
|
|
||||||
when(v.id) {
|
when(v.id) {
|
||||||
R.id.btnColumnClose -> activity.closeColumn(column )
|
R.id.btnColumnClose -> activity.closeColumn(column)
|
||||||
|
|
||||||
R.id.btnColumnReload -> {
|
R.id.btnColumnReload -> {
|
||||||
App1.custom_emoji_cache.clearErrorCache()
|
App1.custom_emoji_cache.clearErrorCache()
|
||||||
|
@ -1083,7 +1095,7 @@ class ColumnViewHolder(
|
||||||
showToast(activity, true, refreshError)
|
showToast(activity, true, refreshError)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun saveScrollPosition() :Boolean{
|
fun saveScrollPosition() : Boolean {
|
||||||
val column = this.column
|
val column = this.column
|
||||||
when {
|
when {
|
||||||
column == null -> log.d("saveScrollPosition [%d] , column==null", page_idx)
|
column == null -> log.d("saveScrollPosition [%d] , column==null", page_idx)
|
||||||
|
|
|
@ -262,6 +262,13 @@
|
||||||
android:text="@string/enable_speech"
|
android:text="@string/enable_speech"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/cbOldApi"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/use_old_api"
|
||||||
|
/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/llRegexFilter"
|
android:id="@+id/llRegexFilter"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -774,5 +774,6 @@
|
||||||
<string name="account_tl_around">…周辺のアカウントTL</string>
|
<string name="account_tl_around">…周辺のアカウントTL</string>
|
||||||
<string name="account_tl_around_of">%1$s周辺のアカウントTL</string>
|
<string name="account_tl_around_of">%1$s周辺のアカウントTL</string>
|
||||||
<string name="verified_at">検証時刻</string>
|
<string name="verified_at">検証時刻</string>
|
||||||
|
<string name="use_old_api">古いAPIを使う</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -793,5 +793,6 @@
|
||||||
<string name="account_tl_around">Account timeline around …</string>
|
<string name="account_tl_around">Account timeline around …</string>
|
||||||
<string name="account_tl_around_of">Account timeline around %1$s</string>
|
<string name="account_tl_around_of">Account timeline around %1$s</string>
|
||||||
<string name="verified_at">verified at</string>
|
<string name="verified_at">verified at</string>
|
||||||
|
<string name="use_old_api">Use old API</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in New Issue