Merge "[tile] Consolidate some functions to be reuse by LauncherTileService." into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c21888d656
@@ -16,9 +16,11 @@ package com.android.systemui.plugins.qs;
|
|||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.metrics.LogMaker;
|
import android.metrics.LogMaker;
|
||||||
import android.service.quicksettings.Tile;
|
import android.service.quicksettings.Tile;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -175,6 +177,24 @@ public interface QSTile {
|
|||||||
public Drawable sideViewCustomDrawable;
|
public Drawable sideViewCustomDrawable;
|
||||||
public String spec;
|
public String spec;
|
||||||
|
|
||||||
|
/** Get the state text. */
|
||||||
|
public String getStateText(int arrayResId, Resources resources) {
|
||||||
|
if (state == Tile.STATE_UNAVAILABLE || this instanceof QSTile.BooleanState) {
|
||||||
|
String[] array = resources.getStringArray(arrayResId);
|
||||||
|
return array[state];
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get the text for secondaryLabel. */
|
||||||
|
public String getSecondaryLabel(String stateText) {
|
||||||
|
if (TextUtils.isEmpty(secondaryLabel)) {
|
||||||
|
return stateText;
|
||||||
|
}
|
||||||
|
return secondaryLabel.toString();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean copyTo(State other) {
|
public boolean copyTo(State other) {
|
||||||
if (other == null) throw new IllegalArgumentException();
|
if (other == null) throw new IllegalArgumentException();
|
||||||
if (!other.getClass().equals(getClass())) throw new IllegalArgumentException();
|
if (!other.getClass().equals(getClass())) throw new IllegalArgumentException();
|
||||||
|
|||||||
@@ -712,6 +712,10 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy
|
|||||||
return context.getDrawable(mResId);
|
return context.getDrawable(mResId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getResId() {
|
||||||
|
return mResId;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
return o instanceof ResourceIcon && ((ResourceIcon) o).mResId == mResId;
|
return o instanceof ResourceIcon && ((ResourceIcon) o).mResId == mResId;
|
||||||
|
|||||||
@@ -440,12 +440,11 @@ open class QSTileViewImpl @JvmOverloads constructor(
|
|||||||
|
|
||||||
// State handling and description
|
// State handling and description
|
||||||
val stateDescription = StringBuilder()
|
val stateDescription = StringBuilder()
|
||||||
val stateText = getStateText(state)
|
val arrayResId = SubtitleArrayMapping.getSubtitleId(state.spec)
|
||||||
|
val stateText = state.getStateText(arrayResId, resources)
|
||||||
|
state.secondaryLabel = state.getSecondaryLabel(stateText)
|
||||||
if (!TextUtils.isEmpty(stateText)) {
|
if (!TextUtils.isEmpty(stateText)) {
|
||||||
stateDescription.append(stateText)
|
stateDescription.append(stateText)
|
||||||
if (TextUtils.isEmpty(state.secondaryLabel)) {
|
|
||||||
state.secondaryLabel = stateText
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (state.disabledByPolicy && state.state != Tile.STATE_UNAVAILABLE) {
|
if (state.disabledByPolicy && state.state != Tile.STATE_UNAVAILABLE) {
|
||||||
stateDescription.append(", ")
|
stateDescription.append(", ")
|
||||||
@@ -591,16 +590,6 @@ open class QSTileViewImpl @JvmOverloads constructor(
|
|||||||
return resources.getStringArray(arrayResId)[Tile.STATE_UNAVAILABLE]
|
return resources.getStringArray(arrayResId)[Tile.STATE_UNAVAILABLE]
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getStateText(state: QSTile.State): String {
|
|
||||||
return if (state.state == Tile.STATE_UNAVAILABLE || state is BooleanState) {
|
|
||||||
val arrayResId = SubtitleArrayMapping.getSubtitleId(state.spec)
|
|
||||||
val array = resources.getStringArray(arrayResId)
|
|
||||||
array[state.state]
|
|
||||||
} else {
|
|
||||||
""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The view should not be animated if it's not on screen and no part of it is visible.
|
* The view should not be animated if it's not on screen and no part of it is visible.
|
||||||
*/
|
*/
|
||||||
@@ -663,46 +652,6 @@ open class QSTileViewImpl @JvmOverloads constructor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
internal object SubtitleArrayMapping {
|
|
||||||
private val subtitleIdsMap = mapOf<String?, Int>(
|
|
||||||
"internet" to R.array.tile_states_internet,
|
|
||||||
"wifi" to R.array.tile_states_wifi,
|
|
||||||
"cell" to R.array.tile_states_cell,
|
|
||||||
"battery" to R.array.tile_states_battery,
|
|
||||||
"dnd" to R.array.tile_states_dnd,
|
|
||||||
"flashlight" to R.array.tile_states_flashlight,
|
|
||||||
"rotation" to R.array.tile_states_rotation,
|
|
||||||
"bt" to R.array.tile_states_bt,
|
|
||||||
"airplane" to R.array.tile_states_airplane,
|
|
||||||
"location" to R.array.tile_states_location,
|
|
||||||
"hotspot" to R.array.tile_states_hotspot,
|
|
||||||
"inversion" to R.array.tile_states_inversion,
|
|
||||||
"saver" to R.array.tile_states_saver,
|
|
||||||
"dark" to R.array.tile_states_dark,
|
|
||||||
"work" to R.array.tile_states_work,
|
|
||||||
"cast" to R.array.tile_states_cast,
|
|
||||||
"night" to R.array.tile_states_night,
|
|
||||||
"screenrecord" to R.array.tile_states_screenrecord,
|
|
||||||
"reverse" to R.array.tile_states_reverse,
|
|
||||||
"reduce_brightness" to R.array.tile_states_reduce_brightness,
|
|
||||||
"cameratoggle" to R.array.tile_states_cameratoggle,
|
|
||||||
"mictoggle" to R.array.tile_states_mictoggle,
|
|
||||||
"controls" to R.array.tile_states_controls,
|
|
||||||
"wallet" to R.array.tile_states_wallet,
|
|
||||||
"qr_code_scanner" to R.array.tile_states_qr_code_scanner,
|
|
||||||
"alarm" to R.array.tile_states_alarm,
|
|
||||||
"onehanded" to R.array.tile_states_onehanded,
|
|
||||||
"color_correction" to R.array.tile_states_color_correction,
|
|
||||||
"dream" to R.array.tile_states_dream,
|
|
||||||
"font_scaling" to R.array.tile_states_font_scaling
|
|
||||||
)
|
|
||||||
|
|
||||||
fun getSubtitleId(spec: String?): Int {
|
|
||||||
return subtitleIdsMap.getOrDefault(spec, R.array.tile_states_default)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun constrainSquishiness(squish: Float): Float {
|
fun constrainSquishiness(squish: Float): Float {
|
||||||
return 0.1f + squish * 0.9f
|
return 0.1f + squish * 0.9f
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package com.android.systemui.qs.tileimpl
|
||||||
|
|
||||||
|
import com.android.systemui.R
|
||||||
|
|
||||||
|
/** Return the subtitle resource Id of the given tile. */
|
||||||
|
object SubtitleArrayMapping {
|
||||||
|
private val subtitleIdsMap: HashMap<String, Int> = HashMap()
|
||||||
|
init {
|
||||||
|
subtitleIdsMap["internet"] = R.array.tile_states_internet
|
||||||
|
subtitleIdsMap["wifi"] = R.array.tile_states_wifi
|
||||||
|
subtitleIdsMap["cell"] = R.array.tile_states_cell
|
||||||
|
subtitleIdsMap["battery"] = R.array.tile_states_battery
|
||||||
|
subtitleIdsMap["dnd"] = R.array.tile_states_dnd
|
||||||
|
subtitleIdsMap["flashlight"] = R.array.tile_states_flashlight
|
||||||
|
subtitleIdsMap["rotation"] = R.array.tile_states_rotation
|
||||||
|
subtitleIdsMap["bt"] = R.array.tile_states_bt
|
||||||
|
subtitleIdsMap["airplane"] = R.array.tile_states_airplane
|
||||||
|
subtitleIdsMap["location"] = R.array.tile_states_location
|
||||||
|
subtitleIdsMap["hotspot"] = R.array.tile_states_hotspot
|
||||||
|
subtitleIdsMap["inversion"] = R.array.tile_states_inversion
|
||||||
|
subtitleIdsMap["saver"] = R.array.tile_states_saver
|
||||||
|
subtitleIdsMap["dark"] = R.array.tile_states_dark
|
||||||
|
subtitleIdsMap["work"] = R.array.tile_states_work
|
||||||
|
subtitleIdsMap["cast"] = R.array.tile_states_cast
|
||||||
|
subtitleIdsMap["night"] = R.array.tile_states_night
|
||||||
|
subtitleIdsMap["screenrecord"] = R.array.tile_states_screenrecord
|
||||||
|
subtitleIdsMap["reverse"] = R.array.tile_states_reverse
|
||||||
|
subtitleIdsMap["reduce_brightness"] = R.array.tile_states_reduce_brightness
|
||||||
|
subtitleIdsMap["cameratoggle"] = R.array.tile_states_cameratoggle
|
||||||
|
subtitleIdsMap["mictoggle"] = R.array.tile_states_mictoggle
|
||||||
|
subtitleIdsMap["controls"] = R.array.tile_states_controls
|
||||||
|
subtitleIdsMap["wallet"] = R.array.tile_states_wallet
|
||||||
|
subtitleIdsMap["qr_code_scanner"] = R.array.tile_states_qr_code_scanner
|
||||||
|
subtitleIdsMap["alarm"] = R.array.tile_states_alarm
|
||||||
|
subtitleIdsMap["onehanded"] = R.array.tile_states_onehanded
|
||||||
|
subtitleIdsMap["color_correction"] = R.array.tile_states_color_correction
|
||||||
|
subtitleIdsMap["dream"] = R.array.tile_states_dream
|
||||||
|
subtitleIdsMap["font_scaling"] = R.array.tile_states_font_scaling
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get the subtitle resource id of the given tile */
|
||||||
|
fun getSubtitleId(spec: String?): Int {
|
||||||
|
return if (spec == null) {
|
||||||
|
R.array.tile_states_default
|
||||||
|
} else subtitleIdsMap[spec] ?: R.array.tile_states_default
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user