Twidere-App-Android-Twitter.../twidere/src/main/kotlin/org/mariotaku/twidere/menu/AccountActionProvider.kt

59 lines
1.9 KiB
Kotlin
Raw Normal View History

2016-08-17 15:46:18 +02:00
package org.mariotaku.twidere.menu
2016-12-04 04:58:03 +01:00
import android.accounts.AccountManager
2016-08-17 15:46:18 +02:00
import android.content.Context
import android.content.Intent
2020-01-26 08:35:15 +01:00
import androidx.core.view.ActionProvider
2016-08-17 15:46:18 +02:00
import android.view.Menu
import android.view.SubMenu
import org.mariotaku.twidere.TwidereConstants
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT
2016-12-04 04:58:03 +01:00
import org.mariotaku.twidere.model.AccountDetails
2016-08-17 15:46:18 +02:00
import org.mariotaku.twidere.model.UserKey
2016-12-04 04:58:03 +01:00
import org.mariotaku.twidere.model.util.AccountUtils
2016-08-17 15:46:18 +02:00
class AccountActionProvider(
context: Context,
2016-12-15 06:11:32 +01:00
var accounts: Array<AccountDetails>? = AccountUtils.getAllAccountDetails(AccountManager.get(context), false)
2016-08-17 15:46:18 +02:00
) : ActionProvider(context), TwidereConstants {
2017-04-12 14:58:08 +02:00
var selectedAccountKeys: Array<UserKey>? = null
2016-08-17 15:46:18 +02:00
var isExclusive: Boolean = false
override fun hasSubMenu(): Boolean {
return true
}
override fun onPrepareSubMenu(subMenu: SubMenu) {
subMenu.removeGroup(MENU_GROUP)
if (accounts == null) return
accounts?.forEachIndexed { idx, account ->
2016-12-04 04:58:03 +01:00
val item = subMenu.add(MENU_GROUP, Menu.NONE, idx, account.user.name)
2016-08-17 15:46:18 +02:00
val intent = Intent()
intent.putExtra(EXTRA_ACCOUNT, account)
item.intent = intent
}
subMenu.setGroupCheckable(MENU_GROUP, true, isExclusive)
2017-04-12 14:58:08 +02:00
selectedAccountKeys?.let {
2016-08-17 15:46:18 +02:00
for (i in 0 until subMenu.size()) {
val item = subMenu.getItem(i)
val intent = item.intent
intent.getParcelableExtra<AccountDetails>(EXTRA_ACCOUNT)?.let { account ->
if (it.contains(account.key)) {
item.isChecked = true
}
2016-08-17 15:46:18 +02:00
}
}
}
}
2017-08-27 16:28:44 +02:00
@Suppress("OverridingDeprecatedMember")
override fun onCreateActionView() = null
2016-08-17 15:46:18 +02:00
companion object {
2020-06-08 23:11:06 +02:00
const val MENU_GROUP = 201
2016-08-17 15:46:18 +02:00
}
}