summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src/com')
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/AdbOverNetworkTile.java126
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java1
3 files changed, 129 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AdbOverNetworkTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AdbOverNetworkTile.java
new file mode 100644
index 0000000..7da198d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AdbOverNetworkTile.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.content.Context;
+import android.content.Intent;
+import android.database.ContentObserver;
+import android.net.NetworkUtils;
+import android.net.Uri;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import com.android.internal.logging.MetricsConstants;
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+
+import java.net.InetAddress;
+
+import cyanogenmod.providers.CMSettings;
+
+public class AdbOverNetworkTile extends QSTile<QSTile.BooleanState> {
+
+ private static final Intent SETTINGS_DEVELOPMENT =
+ new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleClick() {
+ CMSettings.Secure.putIntForUser(mContext.getContentResolver(),
+ CMSettings.Secure.ADB_PORT, getState().value ? -1 : 5555,
+ UserHandle.USER_CURRENT);
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(SETTINGS_DEVELOPMENT);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ state.visible = isAdbEnabled();
+ if (!state.visible) {
+ return;
+ }
+ state.value = isAdbNetworkEnabled();
+ if (state.value) {
+ WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
+ WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+
+ if (wifiInfo != null) {
+ // if wifiInfo is not null, set the label to "hostAddress"
+ InetAddress address = NetworkUtils.intToInetAddress(wifiInfo.getIpAddress());
+ state.label = address.getHostAddress();
+ } else {
+ //if wifiInfo is null, set the enabled label without host address
+ state.label = mContext.getString(R.string.quick_settings_network_adb_enabled_label);
+ }
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_network_adb_on);
+ } else {
+ // Otherwise set the disabled label and icon
+ state.label = mContext.getString(R.string.quick_settings_network_adb_disabled_label);
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_network_adb_off);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return MetricsConstants.DONT_TRACK_ME_BRO;
+ }
+
+ private boolean isAdbEnabled() {
+ return Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Global.ADB_ENABLED, 0) > 0;
+ }
+
+ private boolean isAdbNetworkEnabled() {
+ return CMSettings.Secure.getInt(mContext.getContentResolver(),
+ CMSettings.Secure.ADB_PORT, 0) > 0;
+ }
+
+ public AdbOverNetworkTile(Host host) {
+ super(host);
+ }
+
+ private ContentObserver mObserver = new ContentObserver(mHandler) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ refreshState();
+ }
+ };
+
+ @Override
+ public void setListening(boolean listening) {
+ if (listening) {
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.Secure.getUriFor(CMSettings.Secure.ADB_PORT),
+ false, mObserver);
+ mContext.getContentResolver().registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Global.ADB_ENABLED),
+ false, mObserver);
+ } else {
+ mContext.getContentResolver().unregisterContentObserver(mObserver);
+ }
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
index dbee4ba..6aead70 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
@@ -36,6 +36,7 @@ import com.android.internal.logging.MetricsLogger;
import android.widget.RemoteViews;
import com.android.systemui.R;
import com.android.systemui.qs.QSTile;
+import com.android.systemui.qs.tiles.AdbOverNetworkTile;
import com.android.systemui.qs.tiles.AirplaneModeTile;
import com.android.systemui.qs.tiles.BluetoothTile;
import com.android.systemui.qs.tiles.CastTile;
@@ -398,6 +399,7 @@ public class QSTileHost implements QSTile.Host, Tunable {
else if (spec.equals("cast")) return R.string.quick_settings_cast_title;
else if (spec.equals("hotspot")) return R.string.quick_settings_hotspot_label;
else if (spec.equals("edit")) return R.string.quick_settings_edit_label;
+ else if (spec.equals("adb_network")) return R.string.qs_tile_adb_over_network;
return 0;
}
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java b/packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java
index 95ca509..b186323 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java
@@ -303,6 +303,7 @@ public class QsTuner extends Fragment implements Callback {
else if (mSpec.equals("location")) return R.drawable.ic_signal_location_enable;
else if (mSpec.equals("cast")) return R.drawable.ic_qs_cast_on;
else if (mSpec.equals("hotspot")) return R.drawable.ic_hotspot_enable;
+ else if (mSpec.equals("adb_network")) return R.drawable.ic_qs_network_adb_on;
return R.drawable.android;
}