Skip to content

Commit 4f49d94

Browse files
author
Winson Chung
committed
Adding data type overlay to network tile.
Change-Id: Iae3c188e2f7f03bd1ebaddc756021be312ddb0aa
1 parent 04a34b3 commit 4f49d94

File tree

4 files changed

+90
-27
lines changed

4 files changed

+90
-27
lines changed

packages/SystemUI/res/layout/quick_settings_tile_rssi.xml

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,38 @@
1313
See the License for the specific language governing permissions and
1414
limitations under the License.
1515
-->
16-
<TextView
16+
<LinearLayout
1717
xmlns:android="http://schemas.android.com/apk/res/android"
18-
style="@style/TextAppearance.QuickSettings.TileView"
19-
android:id="@+id/rssi_textview"
2018
android:layout_width="wrap_content"
2119
android:layout_height="wrap_content"
2220
android:layout_gravity="center"
23-
android:gravity="center"
24-
android:text="@string/quick_settings_rssi_label"
25-
/>
21+
android:orientation="vertical">
22+
<FrameLayout
23+
android:layout_width="wrap_content"
24+
android:layout_height="wrap_content"
25+
android:layout_gravity="center">
26+
<ImageView
27+
android:id="@+id/rssi_image"
28+
android:layout_width="wrap_content"
29+
android:layout_height="wrap_content"
30+
android:layout_gravity="center"
31+
android:paddingBottom="10dp"
32+
/>
33+
<ImageView
34+
android:id="@+id/rssi_overlay_image"
35+
android:layout_width="wrap_content"
36+
android:layout_height="wrap_content"
37+
android:layout_gravity="center"
38+
android:paddingBottom="10dp"
39+
/>
40+
</FrameLayout>
41+
<TextView
42+
style="@style/TextAppearance.QuickSettings.TileView"
43+
android:id="@+id/rssi_textview"
44+
android:layout_width="wrap_content"
45+
android:layout_height="wrap_content"
46+
android:layout_gravity="center"
47+
android:gravity="center"
48+
android:text="@string/quick_settings_rssi_label"
49+
/>
50+
</LinearLayout>

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import android.content.res.Resources;
3030
import android.database.Cursor;
3131
import android.graphics.drawable.Drawable;
32+
import android.graphics.drawable.LayerDrawable;
3233
import android.graphics.drawable.LevelListDrawable;
3334
import android.hardware.display.DisplayManager;
3435
import android.hardware.display.WifiDisplay;
@@ -50,6 +51,7 @@
5051

5152
import com.android.internal.view.RotationPolicy;
5253
import com.android.systemui.R;
54+
import com.android.systemui.statusbar.phone.QuickSettingsModel.RSSIState;
5355
import com.android.systemui.statusbar.phone.QuickSettingsModel.State;
5456
import com.android.systemui.statusbar.phone.QuickSettingsModel.UserState;
5557
import com.android.systemui.statusbar.policy.BatteryController;
@@ -295,8 +297,16 @@ public void onClick(View v) {
295297
mModel.addRSSITile(rssiTile, new QuickSettingsModel.RefreshCallback() {
296298
@Override
297299
public void refreshView(QuickSettingsTileView view, State state) {
300+
RSSIState rssiState = (RSSIState) state;
301+
ImageView iv = (ImageView) view.findViewById(R.id.rssi_image);
302+
ImageView iov = (ImageView) view.findViewById(R.id.rssi_overlay_image);
298303
TextView tv = (TextView) view.findViewById(R.id.rssi_textview);
299-
tv.setCompoundDrawablesRelativeWithIntrinsicBounds(0, state.iconId, 0, 0);
304+
iv.setImageResource(rssiState.signalIconId);
305+
if (rssiState.dataTypeIconId > 0) {
306+
iov.setImageResource(rssiState.dataTypeIconId);
307+
} else {
308+
iov.setImageDrawable(null);
309+
}
300310
tv.setText(state.label);
301311
}
302312
});

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ static class BatteryState extends State {
6060
int batteryLevel;
6161
boolean pluggedIn;
6262
}
63+
static class RSSIState extends State {
64+
int signalIconId;
65+
int dataTypeIconId;
66+
}
6367
static class UserState extends State {
6468
Drawable avatar;
6569
}
@@ -124,7 +128,7 @@ public void startObserving() {
124128

125129
private QuickSettingsTileView mRSSITile;
126130
private RefreshCallback mRSSICallback;
127-
private State mRSSIState = new State();
131+
private RSSIState mRSSIState = new RSSIState();
128132

129133
private QuickSettingsTileView mBluetoothTile;
130134
private RefreshCallback mBluetoothCallback;
@@ -258,13 +262,16 @@ boolean deviceSupportsTelephony() {
258262
// NetworkSignalChanged callback
259263
@Override
260264
public void onMobileDataSignalChanged(boolean enabled, int mobileSignalIconId,
261-
String enabledDesc) {
265+
int dataTypeIconId, String enabledDesc) {
262266
if (deviceSupportsTelephony()) {
263267
// TODO: If view is in awaiting state, disable
264268
Resources r = mContext.getResources();
265-
mRSSIState.iconId = enabled && (mobileSignalIconId > 0)
269+
mRSSIState.signalIconId = enabled && (mobileSignalIconId > 0)
266270
? mobileSignalIconId
267271
: R.drawable.ic_qs_signal_no_signal;
272+
mRSSIState.dataTypeIconId = enabled && (dataTypeIconId > 0)
273+
? dataTypeIconId
274+
: 0;
268275
mRSSIState.label = enabled
269276
? enabledDesc
270277
: r.getString(R.string.quick_settings_rssi_emergency_only);

packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,6 @@
1616

1717
package com.android.systemui.statusbar.policy;
1818

19-
import java.io.FileDescriptor;
20-
import java.io.PrintWriter;
21-
import java.util.ArrayList;
22-
import java.util.List;
23-
2419
import android.content.BroadcastReceiver;
2520
import android.content.Context;
2621
import android.content.Intent;
@@ -37,9 +32,7 @@
3732
import android.os.Message;
3833
import android.os.Messenger;
3934
import android.os.RemoteException;
40-
import android.os.SystemProperties;
4135
import android.provider.Settings;
42-
import android.provider.Telephony;
4336
import android.telephony.PhoneStateListener;
4437
import android.telephony.ServiceState;
4538
import android.telephony.SignalStrength;
@@ -50,15 +43,18 @@
5043
import android.widget.TextView;
5144

5245
import com.android.internal.app.IBatteryStats;
53-
import com.android.internal.telephony.IccCard;
5446
import com.android.internal.telephony.IccCardConstants;
5547
import com.android.internal.telephony.TelephonyIntents;
5648
import com.android.internal.telephony.cdma.EriInfo;
57-
import com.android.server.am.BatteryStatsService;
5849
import com.android.internal.util.AsyncChannel;
59-
50+
import com.android.server.am.BatteryStatsService;
6051
import com.android.systemui.R;
6152

53+
import java.io.FileDescriptor;
54+
import java.io.PrintWriter;
55+
import java.util.ArrayList;
56+
import java.util.List;
57+
6258
public class NetworkController extends BroadcastReceiver {
6359
// debug
6460
static final String TAG = "StatusBar.NetworkController";
@@ -85,6 +81,7 @@ public class NetworkController extends BroadcastReceiver {
8581
int mDataDirectionIconId; // data + data direction on phones
8682
int mDataSignalIconId;
8783
int mDataTypeIconId;
84+
int mQSDataTypeIconId;
8885
int mAirplaneIconId;
8986
boolean mDataActive;
9087
int mMobileActivityIconId; // overlay arrows for data direction
@@ -178,7 +175,8 @@ void setMobileDataIndicators(boolean visible, int strengthIcon, int activityIcon
178175

179176
public interface NetworkSignalChangedCallback {
180177
void onWifiSignalChanged(boolean enabled, int wifiSignalIconId, String description);
181-
void onMobileDataSignalChanged(boolean enabled, int mobileSignalIconId, String description);
178+
void onMobileDataSignalChanged(boolean enabled, int mobileSignalIconId, int dataTypeIconId,
179+
String description);
182180
void onAirplaneModeChanged(boolean enabled);
183181
}
184182

@@ -352,15 +350,16 @@ void notifySignalsChangedCallbacks(NetworkSignalChangedCallback cb) {
352350
cb.onWifiSignalChanged(wifiEnabled, mQSWifiIconId, wifiDesc);
353351

354352
if (isEmergencyOnly()) {
355-
cb.onMobileDataSignalChanged(false, mQSPhoneSignalIconId, null);
353+
cb.onMobileDataSignalChanged(false, mQSPhoneSignalIconId, mQSDataTypeIconId, null);
356354
} else {
357355
if (mIsWimaxEnabled && mWimaxConnected) {
358-
// wimax is special
359-
cb.onMobileDataSignalChanged(true, mQSPhoneSignalIconId, mNetworkName);
356+
// Wimax is special
357+
cb.onMobileDataSignalChanged(true, mQSPhoneSignalIconId, mQSDataTypeIconId,
358+
mNetworkName);
360359
} else {
361-
// normal mobile data
360+
// Normal mobile data
362361
cb.onMobileDataSignalChanged(mHasMobileDataFeature, mQSPhoneSignalIconId,
363-
mNetworkName);
362+
mQSDataTypeIconId, mNetworkName);
364363
}
365364
}
366365
cb.onAirplaneModeChanged(mAirplaneMode);
@@ -570,6 +569,7 @@ private final void updateDataNetType() {
570569
// wimax is a special 4g network not handled by telephony
571570
mDataIconList = TelephonyIcons.DATA_4G[mInetCondition];
572571
mDataTypeIconId = R.drawable.stat_sys_data_connected_4g;
572+
mQSDataTypeIconId = R.drawable.ic_qs_signal_4g;
573573
mContentDescriptionDataType = mContext.getString(
574574
R.string.accessibility_data_connection_4g);
575575
} else {
@@ -578,6 +578,7 @@ private final void updateDataNetType() {
578578
if (!mShowAtLeastThreeGees) {
579579
mDataIconList = TelephonyIcons.DATA_G[mInetCondition];
580580
mDataTypeIconId = 0;
581+
mQSDataTypeIconId = 0;
581582
mContentDescriptionDataType = mContext.getString(
582583
R.string.accessibility_data_connection_gprs);
583584
break;
@@ -588,6 +589,7 @@ private final void updateDataNetType() {
588589
if (!mShowAtLeastThreeGees) {
589590
mDataIconList = TelephonyIcons.DATA_E[mInetCondition];
590591
mDataTypeIconId = R.drawable.stat_sys_data_connected_e;
592+
mQSDataTypeIconId = R.drawable.ic_qs_signal_e;
591593
mContentDescriptionDataType = mContext.getString(
592594
R.string.accessibility_data_connection_edge);
593595
break;
@@ -597,6 +599,7 @@ private final void updateDataNetType() {
597599
case TelephonyManager.NETWORK_TYPE_UMTS:
598600
mDataIconList = TelephonyIcons.DATA_3G[mInetCondition];
599601
mDataTypeIconId = R.drawable.stat_sys_data_connected_3g;
602+
mQSDataTypeIconId = R.drawable.ic_qs_signal_3g;
600603
mContentDescriptionDataType = mContext.getString(
601604
R.string.accessibility_data_connection_3g);
602605
break;
@@ -607,11 +610,13 @@ private final void updateDataNetType() {
607610
if (mHspaDataDistinguishable) {
608611
mDataIconList = TelephonyIcons.DATA_H[mInetCondition];
609612
mDataTypeIconId = R.drawable.stat_sys_data_connected_h;
613+
mQSDataTypeIconId = R.drawable.ic_qs_signal_h;
610614
mContentDescriptionDataType = mContext.getString(
611615
R.string.accessibility_data_connection_3_5g);
612616
} else {
613617
mDataIconList = TelephonyIcons.DATA_3G[mInetCondition];
614618
mDataTypeIconId = R.drawable.stat_sys_data_connected_3g;
619+
mQSDataTypeIconId = R.drawable.ic_qs_signal_3g;
615620
mContentDescriptionDataType = mContext.getString(
616621
R.string.accessibility_data_connection_3g);
617622
}
@@ -621,6 +626,7 @@ private final void updateDataNetType() {
621626
// display 1xRTT for IS95A/B
622627
mDataIconList = TelephonyIcons.DATA_1X[mInetCondition];
623628
mDataTypeIconId = R.drawable.stat_sys_data_connected_1x;
629+
mQSDataTypeIconId = R.drawable.ic_qs_signal_1x;
624630
mContentDescriptionDataType = mContext.getString(
625631
R.string.accessibility_data_connection_cdma);
626632
break;
@@ -631,6 +637,7 @@ private final void updateDataNetType() {
631637
if (!mShowAtLeastThreeGees) {
632638
mDataIconList = TelephonyIcons.DATA_1X[mInetCondition];
633639
mDataTypeIconId = R.drawable.stat_sys_data_connected_1x;
640+
mQSDataTypeIconId = R.drawable.ic_qs_signal_1x;
634641
mContentDescriptionDataType = mContext.getString(
635642
R.string.accessibility_data_connection_cdma);
636643
break;
@@ -643,24 +650,28 @@ private final void updateDataNetType() {
643650
case TelephonyManager.NETWORK_TYPE_EHRPD:
644651
mDataIconList = TelephonyIcons.DATA_3G[mInetCondition];
645652
mDataTypeIconId = R.drawable.stat_sys_data_connected_3g;
653+
mQSDataTypeIconId = R.drawable.ic_qs_signal_3g;
646654
mContentDescriptionDataType = mContext.getString(
647655
R.string.accessibility_data_connection_3g);
648656
break;
649657
case TelephonyManager.NETWORK_TYPE_LTE:
650658
mDataIconList = TelephonyIcons.DATA_4G[mInetCondition];
651659
mDataTypeIconId = R.drawable.stat_sys_data_connected_4g;
660+
mQSDataTypeIconId = R.drawable.ic_qs_signal_4g;
652661
mContentDescriptionDataType = mContext.getString(
653662
R.string.accessibility_data_connection_4g);
654663
break;
655664
default:
656665
if (!mShowAtLeastThreeGees) {
657666
mDataIconList = TelephonyIcons.DATA_G[mInetCondition];
658667
mDataTypeIconId = R.drawable.stat_sys_data_connected_g;
668+
mQSDataTypeIconId = R.drawable.ic_qs_signal_g;
659669
mContentDescriptionDataType = mContext.getString(
660670
R.string.accessibility_data_connection_gprs);
661671
} else {
662672
mDataIconList = TelephonyIcons.DATA_3G[mInetCondition];
663673
mDataTypeIconId = R.drawable.stat_sys_data_connected_3g;
674+
mQSDataTypeIconId = R.drawable.ic_qs_signal_3g;
664675
mContentDescriptionDataType = mContext.getString(
665676
R.string.accessibility_data_connection_3g);
666677
}
@@ -671,9 +682,11 @@ private final void updateDataNetType() {
671682
if (isCdma()) {
672683
if (isCdmaEri()) {
673684
mDataTypeIconId = R.drawable.stat_sys_data_connected_roam;
685+
mQSDataTypeIconId = R.drawable.ic_qs_signal_r;
674686
}
675687
} else if (mPhone.isNetworkRoaming()) {
676688
mDataTypeIconId = R.drawable.stat_sys_data_connected_roam;
689+
mQSDataTypeIconId = R.drawable.ic_qs_signal_r;
677690
}
678691
}
679692

@@ -1095,7 +1108,7 @@ void refreshViews() {
10951108
mContentDescriptionPhoneSignal = mContext.getString(
10961109
R.string.accessibility_airplane_mode);
10971110
mAirplaneIconId = R.drawable.stat_sys_signal_flightmode;
1098-
mPhoneSignalIconId = mDataSignalIconId = mDataTypeIconId = 0;
1111+
mPhoneSignalIconId = mDataSignalIconId = mDataTypeIconId = mQSDataTypeIconId = 0;
10991112
mQSPhoneSignalIconId = 0;
11001113

11011114
// combined values from connected wifi take precedence over airplane mode
@@ -1125,12 +1138,15 @@ else if (!mDataConnected && !mWifiConnected && !mBluetoothTethered && !mWimaxCon
11251138
? mContentDescriptionDataType : mContentDescriptionWifi;
11261139

11271140
mDataTypeIconId = 0;
1141+
mQSDataTypeIconId = 0;
11281142
if (isCdma()) {
11291143
if (isCdmaEri()) {
11301144
mDataTypeIconId = R.drawable.stat_sys_data_connected_roam;
1145+
mQSDataTypeIconId = R.drawable.ic_qs_signal_r;
11311146
}
11321147
} else if (mPhone.isNetworkRoaming()) {
11331148
mDataTypeIconId = R.drawable.stat_sys_data_connected_roam;
1149+
mQSDataTypeIconId = R.drawable.ic_qs_signal_r;
11341150
}
11351151
}
11361152

@@ -1155,6 +1171,7 @@ else if (!mDataConnected && !mWifiConnected && !mBluetoothTethered && !mWimaxCon
11551171
+ " mDataDirectionIconId=0x" + Integer.toHexString(mDataDirectionIconId)
11561172
+ " mDataSignalIconId=0x" + Integer.toHexString(mDataSignalIconId)
11571173
+ " mDataTypeIconId=0x" + Integer.toHexString(mDataTypeIconId)
1174+
+ " mQSDataTypeIconId=0x" + Integer.toHexString(mQSDataTypeIconId)
11581175
+ " mWifiIconId=0x" + Integer.toHexString(mWifiIconId)
11591176
+ " mQSWifiIconId=0x" + Integer.toHexString(mQSWifiIconId)
11601177
+ " mBluetoothTetherIconId=0x" + Integer.toHexString(mBluetoothTetherIconId));
@@ -1386,6 +1403,10 @@ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
13861403
pw.print(Integer.toHexString(mDataTypeIconId));
13871404
pw.print("/");
13881405
pw.println(getResourceName(mDataTypeIconId));
1406+
pw.print(" mQSDataTypeIconId=");
1407+
pw.print(Integer.toHexString(mQSDataTypeIconId));
1408+
pw.print("/");
1409+
pw.println(getResourceName(mQSDataTypeIconId));
13891410

13901411
pw.println(" - wifi ------");
13911412
pw.print(" mWifiEnabled=");

0 commit comments

Comments
 (0)