2021-06-28 09:09:00 +02:00
|
|
|
package jp.juggler.subwaytooter.actmain
|
2021-06-23 06:14:25 +02:00
|
|
|
|
2021-06-28 09:09:00 +02:00
|
|
|
import jp.juggler.subwaytooter.ActMain
|
|
|
|
import jp.juggler.subwaytooter.App1
|
2021-11-06 04:00:29 +01:00
|
|
|
import jp.juggler.subwaytooter.pref.PrefL
|
2021-06-28 09:09:00 +02:00
|
|
|
import jp.juggler.subwaytooter.column.fireShowColumnHeader
|
2021-06-23 06:14:25 +02:00
|
|
|
import jp.juggler.subwaytooter.table.SavedAccount
|
|
|
|
import java.util.ArrayList
|
|
|
|
|
|
|
|
// デフォルトの投稿先アカウントを探す。アカウント選択が必要な状況ならnull
|
|
|
|
val ActMain.currentPostTarget: SavedAccount?
|
|
|
|
get() = phoneTab(
|
|
|
|
{ env ->
|
|
|
|
val c = env.pagerAdapter.getColumn(env.pager.currentItem)
|
|
|
|
return when {
|
|
|
|
c == null || c.accessInfo.isPseudo -> null
|
|
|
|
else -> c.accessInfo
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{ env ->
|
|
|
|
|
|
|
|
val dbId = PrefL.lpTabletTootDefaultAccount(App1.pref)
|
|
|
|
if (dbId != -1L) {
|
|
|
|
val a = SavedAccount.loadAccount(this@currentPostTarget, dbId)
|
|
|
|
if (a != null && !a.isPseudo) return a
|
|
|
|
}
|
|
|
|
|
|
|
|
val accounts = ArrayList<SavedAccount>()
|
|
|
|
for (c in env.visibleColumns) {
|
|
|
|
try {
|
|
|
|
val a = c.accessInfo
|
|
|
|
// 画面内に疑似アカウントがあれば常にアカウント選択が必要
|
|
|
|
if (a.isPseudo) {
|
|
|
|
accounts.clear()
|
|
|
|
break
|
|
|
|
}
|
|
|
|
// 既出でなければ追加する
|
|
|
|
if (null == accounts.find { it == a }) accounts.add(a)
|
|
|
|
} catch (ignored: Throwable) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return when (accounts.size) {
|
|
|
|
// 候補が1つだけならアカウント選択は不要
|
|
|
|
1 -> accounts.first()
|
|
|
|
// 候補が2つ以上ならアカウント選択は必要
|
|
|
|
else -> null
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2021-06-28 09:09:00 +02:00
|
|
|
fun ActMain.reloadAccountSetting(newAccounts: ArrayList<SavedAccount> = SavedAccount.loadAccountList(this)) {
|
2021-06-23 06:14:25 +02:00
|
|
|
for (column in appState.columnList) {
|
|
|
|
val a = column.accessInfo
|
|
|
|
if (!a.isNA) a.reloadSetting(this, newAccounts.find { it.acct == a.acct })
|
|
|
|
column.fireShowColumnHeader()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fun ActMain.reloadAccountSetting(account: SavedAccount) {
|
|
|
|
val newData = SavedAccount.loadAccount(this, account.db_id)
|
|
|
|
?: return
|
|
|
|
for (column in appState.columnList) {
|
|
|
|
val a = column.accessInfo
|
|
|
|
if (a.acct != newData.acct) continue
|
|
|
|
if (!a.isNA) a.reloadSetting(this, newData)
|
|
|
|
column.fireShowColumnHeader()
|
|
|
|
}
|
|
|
|
}
|