Skip to content

Commit 53d9659

Browse files
dsandlerAndroid (Google) Code Review
authored andcommitted
Merge "Allow long-press on Wifi and Bluetooth tiles to toggle." into jb-mr1.1-dev
2 parents a004ff8 + ab51002 commit 53d9659

File tree

1 file changed

+47
-2
lines changed

1 file changed

+47
-2
lines changed

packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import android.graphics.drawable.LevelListDrawable;
5656
import android.hardware.display.DisplayManager;
5757
import android.hardware.display.WifiDisplayStatus;
58+
import android.net.wifi.WifiManager;
5859
import android.os.AsyncTask;
5960
import android.os.Handler;
6061
import android.os.RemoteException;
@@ -85,6 +86,8 @@ class QuickSettings {
8586
private static final String TAG = "QuickSettings";
8687
public static final boolean SHOW_IME_TILE = false;
8788

89+
public static final boolean LONG_PRESS_TOGGLES = true;
90+
8891
private Context mContext;
8992
private PanelBar mBar;
9093
private QuickSettingsModel mModel;
@@ -94,6 +97,8 @@ class QuickSettings {
9497
private WifiDisplayStatus mWifiDisplayStatus;
9598
private PhoneStatusBar mStatusBarService;
9699
private BluetoothState mBluetoothState;
100+
private BluetoothAdapter mBluetoothAdapter;
101+
private WifiManager mWifiManager;
97102

98103
private BrightnessController mBrightnessController;
99104
private BluetoothController mBluetoothController;
@@ -131,6 +136,9 @@ public QuickSettings(Context context, QuickSettingsContainerView container) {
131136
mModel = new QuickSettingsModel(context);
132137
mWifiDisplayStatus = new WifiDisplayStatus();
133138
mBluetoothState = new QuickSettingsModel.BluetoothState();
139+
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
140+
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
141+
134142
mHandler = new Handler();
135143

136144
Resources r = mContext.getResources();
@@ -391,7 +399,7 @@ public void refreshView(QuickSettingsTileView view, State state) {
391399

392400
private void addSystemTiles(ViewGroup parent, LayoutInflater inflater) {
393401
// Wi-fi
394-
QuickSettingsTileView wifiTile = (QuickSettingsTileView)
402+
final QuickSettingsTileView wifiTile = (QuickSettingsTileView)
395403
inflater.inflate(R.layout.quick_settings_tile, parent, false);
396404
wifiTile.setContent(R.layout.quick_settings_tile_wifi, inflater);
397405
wifiTile.setOnClickListener(new View.OnClickListener() {
@@ -400,6 +408,30 @@ public void onClick(View v) {
400408
startSettingsActivity(android.provider.Settings.ACTION_WIFI_SETTINGS);
401409
}
402410
});
411+
if (LONG_PRESS_TOGGLES) {
412+
wifiTile.setOnLongClickListener(new View.OnLongClickListener() {
413+
@Override
414+
public boolean onLongClick(View v) {
415+
final boolean enable =
416+
(mWifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED);
417+
new AsyncTask<Void, Void, Void>() {
418+
@Override
419+
protected Void doInBackground(Void... args) {
420+
// Disable tethering if enabling Wifi
421+
final int wifiApState = mWifiManager.getWifiApState();
422+
if (enable && ((wifiApState == WifiManager.WIFI_AP_STATE_ENABLING) ||
423+
(wifiApState == WifiManager.WIFI_AP_STATE_ENABLED))) {
424+
mWifiManager.setWifiApEnabled(null, false);
425+
}
426+
427+
mWifiManager.setWifiEnabled(enable);
428+
return null;
429+
}
430+
}.execute();
431+
wifiTile.setPressed(false);
432+
return true;
433+
}} );
434+
}
403435
mModel.addWifiTile(wifiTile, new QuickSettingsModel.RefreshCallback() {
404436
@Override
405437
public void refreshView(QuickSettingsTileView view, State state) {
@@ -538,7 +570,7 @@ public void refreshView(QuickSettingsTileView view, State state) {
538570

539571
// Bluetooth
540572
if (mModel.deviceSupportsBluetooth()) {
541-
QuickSettingsTileView bluetoothTile = (QuickSettingsTileView)
573+
final QuickSettingsTileView bluetoothTile = (QuickSettingsTileView)
542574
inflater.inflate(R.layout.quick_settings_tile, parent, false);
543575
bluetoothTile.setContent(R.layout.quick_settings_tile_bluetooth, inflater);
544576
bluetoothTile.setOnClickListener(new View.OnClickListener() {
@@ -547,6 +579,19 @@ public void onClick(View v) {
547579
startSettingsActivity(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
548580
}
549581
});
582+
if (LONG_PRESS_TOGGLES) {
583+
bluetoothTile.setOnLongClickListener(new View.OnLongClickListener() {
584+
@Override
585+
public boolean onLongClick(View v) {
586+
if (mBluetoothAdapter.isEnabled()) {
587+
mBluetoothAdapter.disable();
588+
} else {
589+
mBluetoothAdapter.enable();
590+
}
591+
bluetoothTile.setPressed(false);
592+
return true;
593+
}});
594+
}
550595
mModel.addBluetoothTile(bluetoothTile, new QuickSettingsModel.RefreshCallback() {
551596
@Override
552597
public void refreshView(QuickSettingsTileView view, State state) {

0 commit comments

Comments
 (0)