Prototype to use details or settings panels
Adds a device config flag to change behavior of tile press or long press: adb shell device_config put systemui qs_use_settings_panel <X> 0 - default 1 - use panels on long press 2 - use panels on click 3 - use old details Currently, there's only a Wifi panel. Also, enabling details makes it so long press on collapsed QS does nothing. Test: manual Change-Id: I19cb0648fde73c7263dcde3efe603b2bc37d4af7
This commit is contained in:
@@ -50,10 +50,19 @@ public final class SystemUiDeviceConfigFlags {
|
||||
// Flags related to controls
|
||||
|
||||
/**
|
||||
* (boolean) Wether to have split behavior when opening QS
|
||||
* (boolean) Whether to have split behavior when opening QS
|
||||
*/
|
||||
public static final String QS_SPLIT_ENABLED = "qs_split_enabled";
|
||||
|
||||
/**
|
||||
* (int) Open settings panels for WiFi and BT tiles
|
||||
* 0 - default behavior, link to settings
|
||||
* 1 - open panel on long press, click remains the same
|
||||
* 2 - open panel on click, long press remains the same
|
||||
* 3 - use details on long press
|
||||
*/
|
||||
public static final String QS_USE_SETTINGS_PANELS = "qs_use_settings_panels";
|
||||
|
||||
// Flags related to Smart Suggestions - these are read in SmartReplyConstants.
|
||||
|
||||
/** (boolean) Whether to enable smart suggestions in notifications. */
|
||||
|
||||
@@ -106,11 +106,6 @@ public class QuickQSPanel extends QSPanel {
|
||||
mFullPanel = fullPanel;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldShowDetail() {
|
||||
return !mExpanded;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawTile(TileRecord r, State state) {
|
||||
if (state instanceof SignalState) {
|
||||
|
||||
@@ -63,6 +63,8 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.qs.PagedTileLayout.TilePage;
|
||||
import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.QuickStatusBarHeader;
|
||||
import com.android.systemui.qs.tiles.QSSettingsControllerKt;
|
||||
import com.android.systemui.qs.tiles.QSSettingsPanel;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
@@ -121,9 +123,16 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy
|
||||
*/
|
||||
abstract public int getMetricsCategory();
|
||||
|
||||
/**
|
||||
* Experimental option on whether to use settings panels. Only loaded on creation, so the tile
|
||||
* needs to be removed and added for this to take effect.
|
||||
*/
|
||||
protected final QSSettingsPanel mQSSettingsPanelOption;
|
||||
|
||||
protected QSTileImpl(QSHost host) {
|
||||
mHost = host;
|
||||
mContext = host.getContext();
|
||||
mQSSettingsPanelOption = QSSettingsControllerKt.getQSSettingsPanelOption();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -288,6 +297,10 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy
|
||||
}
|
||||
|
||||
protected void handleLongClick() {
|
||||
if (mQSSettingsPanelOption == QSSettingsPanel.USE_DETAIL) {
|
||||
showDetail(true);
|
||||
return;
|
||||
}
|
||||
Dependency.get(ActivityStarter.class).postStartActivityDismissingKeyguard(
|
||||
getLongClickIntent(), 0);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2019 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.tiles
|
||||
|
||||
import android.provider.DeviceConfig
|
||||
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags
|
||||
|
||||
enum class QSSettingsPanel {
|
||||
DEFAULT,
|
||||
OPEN_LONG_PRESS,
|
||||
OPEN_CLICK,
|
||||
USE_DETAIL
|
||||
}
|
||||
|
||||
fun getQSSettingsPanelOption(): QSSettingsPanel =
|
||||
when (DeviceConfig.getInt(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.QS_USE_SETTINGS_PANELS, 0)) {
|
||||
1 -> QSSettingsPanel.OPEN_LONG_PRESS
|
||||
2 -> QSSettingsPanel.OPEN_CLICK
|
||||
3 -> QSSettingsPanel.USE_DETAIL
|
||||
else -> QSSettingsPanel.DEFAULT
|
||||
}
|
||||
@@ -56,6 +56,7 @@ import javax.inject.Inject;
|
||||
/** Quick settings tile: Wifi **/
|
||||
public class WifiTile extends QSTileImpl<SignalState> {
|
||||
private static final Intent WIFI_SETTINGS = new Intent(Settings.ACTION_WIFI_SETTINGS);
|
||||
private static final Intent WIFI_PANEL = new Intent(Settings.Panel.ACTION_WIFI);
|
||||
|
||||
protected final NetworkController mController;
|
||||
private final AccessPointController mWifiController;
|
||||
@@ -112,11 +113,16 @@ public class WifiTile extends QSTileImpl<SignalState> {
|
||||
|
||||
@Override
|
||||
public Intent getLongClickIntent() {
|
||||
return WIFI_SETTINGS;
|
||||
if (mQSSettingsPanelOption == QSSettingsPanel.OPEN_LONG_PRESS) return WIFI_PANEL;
|
||||
else return WIFI_SETTINGS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleClick() {
|
||||
if (mQSSettingsPanelOption == QSSettingsPanel.OPEN_CLICK) {
|
||||
mActivityStarter.postStartActivityDismissingKeyguard(WIFI_PANEL, 0);
|
||||
return;
|
||||
}
|
||||
// Secondary clicks are header clicks, just toggle.
|
||||
mState.copyTo(mStateBeforeClick);
|
||||
boolean wifiEnabled = mState.value;
|
||||
|
||||
Reference in New Issue
Block a user