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
|
|
|
|
import android.view.ActionProvider
|
|
|
|
import android.view.Menu
|
|
|
|
import android.view.SubMenu
|
|
|
|
import android.view.View
|
|
|
|
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 {
|
|
|
|
|
|
|
|
var selectedAccountIds: Array<UserKey>? = null
|
|
|
|
var isExclusive: Boolean = false
|
|
|
|
|
|
|
|
override fun hasSubMenu(): Boolean {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onCreateActionView(): View? {
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
|
|
|
|
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)
|
|
|
|
selectedAccountIds?.let {
|
|
|
|
for (i in 0 until subMenu.size()) {
|
|
|
|
val item = subMenu.getItem(i)
|
|
|
|
val intent = item.intent
|
2016-12-04 06:45:57 +01:00
|
|
|
val account: AccountDetails = intent.getParcelableExtra(EXTRA_ACCOUNT)
|
|
|
|
if (it.contains(account.key)) {
|
2016-08-17 15:46:18 +02:00
|
|
|
item.isChecked = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
|
|
|
|
val MENU_GROUP = 201
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|