Controls UI - Direct 'add controls' to the proper activity
If there's more than one structure, set to the proper page in the ViewPager. Fix the backstack so 'see other apps' works properly. Bug: 153017283 Test: manual, use 'add controls' menu Change-Id: Ie99537dee841817c8d790e00fe50c800a90c6158
This commit is contained in:
@@ -55,13 +55,19 @@ class ControlsFavoritingActivity @Inject constructor(
|
||||
|
||||
companion object {
|
||||
private const val TAG = "ControlsFavoritingActivity"
|
||||
|
||||
// If provided and no structure is available, use as the title
|
||||
const val EXTRA_APP = "extra_app_label"
|
||||
|
||||
// If provided, show this structure page first
|
||||
const val EXTRA_STRUCTURE = "extra_structure"
|
||||
private const val TOOLTIP_PREFS_KEY = Prefs.Key.CONTROLS_STRUCTURE_SWIPE_TOOLTIP_COUNT
|
||||
private const val TOOLTIP_MAX_SHOWN = 2
|
||||
}
|
||||
|
||||
private var component: ComponentName? = null
|
||||
private var appName: CharSequence? = null
|
||||
private var structureExtra: CharSequence? = null
|
||||
|
||||
private lateinit var structurePager: ViewPager2
|
||||
private lateinit var statusText: TextView
|
||||
@@ -111,6 +117,7 @@ class ControlsFavoritingActivity @Inject constructor(
|
||||
val collator = Collator.getInstance(resources.configuration.locales[0])
|
||||
comparator = compareBy(collator) { it.structureName }
|
||||
appName = intent.getCharSequenceExtra(EXTRA_APP)
|
||||
structureExtra = intent.getCharSequenceExtra(EXTRA_STRUCTURE) ?: ""
|
||||
component = intent.getParcelableExtra<ComponentName>(Intent.EXTRA_COMPONENT_NAME)
|
||||
|
||||
bindViews()
|
||||
@@ -137,9 +144,15 @@ class ControlsFavoritingActivity @Inject constructor(
|
||||
listOfStructures = controlsByStructure.map {
|
||||
StructureContainer(it.key, AllModel(it.value, favoriteKeys, emptyZoneString))
|
||||
}.sortedWith(comparator)
|
||||
|
||||
val structureIndex = listOfStructures.indexOfFirst {
|
||||
sc -> sc.structureName == structureExtra
|
||||
}.let { if (it == -1) 0 else it }
|
||||
|
||||
executor.execute {
|
||||
doneButton.isEnabled = true
|
||||
structurePager.adapter = StructureAdapter(listOfStructures)
|
||||
structurePager.setCurrentItem(structureIndex)
|
||||
if (error) {
|
||||
statusText.text = resources.getText(R.string.controls_favorite_load_error)
|
||||
} else {
|
||||
@@ -247,7 +260,10 @@ class ControlsFavoritingActivity @Inject constructor(
|
||||
requireViewById<Button>(R.id.other_apps).apply {
|
||||
visibility = View.VISIBLE
|
||||
setOnClickListener {
|
||||
this@ControlsFavoritingActivity.onBackPressed()
|
||||
val i = Intent()
|
||||
i.setComponent(
|
||||
ComponentName(context, ControlsProviderSelectorActivity::class.java))
|
||||
context.startActivity(i)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ import com.android.systemui.controls.ControlsServiceInfo
|
||||
import com.android.systemui.controls.controller.ControlInfo
|
||||
import com.android.systemui.controls.controller.ControlsController
|
||||
import com.android.systemui.controls.controller.StructureInfo
|
||||
import com.android.systemui.controls.management.ControlsFavoritingActivity
|
||||
import com.android.systemui.controls.management.ControlsListingController
|
||||
import com.android.systemui.controls.management.ControlsProviderSelectorActivity
|
||||
import com.android.systemui.dagger.qualifiers.Background
|
||||
@@ -90,21 +91,8 @@ class ControlsUiControllerImpl @Inject constructor (
|
||||
private lateinit var lastItems: List<SelectionItem>
|
||||
private var popup: ListPopupWindow? = null
|
||||
private var activeDialog: Dialog? = null
|
||||
private val addControlsItem: SelectionItem
|
||||
private var hidden = true
|
||||
|
||||
init {
|
||||
val addDrawable = context.getDrawable(R.drawable.ic_add).apply {
|
||||
setTint(context.resources.getColor(R.color.control_secondary_text, null))
|
||||
}
|
||||
addControlsItem = SelectionItem(
|
||||
context.resources.getString(R.string.controls_providers_title),
|
||||
"",
|
||||
addDrawable,
|
||||
EMPTY_COMPONENT
|
||||
)
|
||||
}
|
||||
|
||||
override val available: Boolean
|
||||
get() = controlsController.get().available
|
||||
|
||||
@@ -182,7 +170,7 @@ class ControlsUiControllerImpl @Inject constructor (
|
||||
inflater.inflate(R.layout.controls_no_favorites, parent, true)
|
||||
|
||||
val viewGroup = parent.requireViewById(R.id.controls_no_favorites_group) as ViewGroup
|
||||
viewGroup.setOnClickListener(launchSelectorActivityListener(context))
|
||||
viewGroup.setOnClickListener { v: View -> startProviderSelectorActivity(v.context) }
|
||||
|
||||
val subtitle = parent.requireViewById<TextView>(R.id.controls_subtitle)
|
||||
subtitle.setText(context.resources.getString(R.string.quick_controls_subtitle))
|
||||
@@ -196,16 +184,28 @@ class ControlsUiControllerImpl @Inject constructor (
|
||||
}
|
||||
}
|
||||
|
||||
private fun launchSelectorActivityListener(context: Context): (View) -> Unit {
|
||||
return { _ ->
|
||||
val closeDialog = Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
|
||||
context.sendBroadcast(closeDialog)
|
||||
|
||||
val i = Intent()
|
||||
i.setComponent(ComponentName(context, ControlsProviderSelectorActivity::class.java))
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(i)
|
||||
private fun startFavoritingActivity(context: Context, si: StructureInfo) {
|
||||
val i = Intent(context, ControlsFavoritingActivity::class.java).apply {
|
||||
putExtra(ControlsFavoritingActivity.EXTRA_APP,
|
||||
controlsListingController.get().getAppLabel(si.componentName))
|
||||
putExtra(ControlsFavoritingActivity.EXTRA_STRUCTURE, si.structure)
|
||||
putExtra(Intent.EXTRA_COMPONENT_NAME, si.componentName)
|
||||
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
}
|
||||
startActivity(context, i)
|
||||
}
|
||||
|
||||
private fun startProviderSelectorActivity(context: Context) {
|
||||
val i = Intent(context, ControlsProviderSelectorActivity::class.java).apply {
|
||||
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
}
|
||||
startActivity(context, i)
|
||||
}
|
||||
|
||||
private fun startActivity(context: Context, intent: Intent) {
|
||||
val closeDialog = Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
|
||||
context.sendBroadcast(closeDialog)
|
||||
context.startActivity(intent)
|
||||
}
|
||||
|
||||
private fun showControlsView(items: List<SelectionItem>) {
|
||||
@@ -246,7 +246,7 @@ class ControlsUiControllerImpl @Inject constructor (
|
||||
) {
|
||||
when (pos) {
|
||||
// 0: Add Control
|
||||
0 -> launchSelectorActivityListener(view.context)(parent)
|
||||
0 -> startFavoritingActivity(view.context, selectedStructure)
|
||||
else -> Log.w(ControlsUiController.TAG,
|
||||
"Unsupported index ($pos) on 'more' menu selection")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user