Skip to content

Commit 43229d7

Browse files
author
Winson Chung
committed
Adding IME tile.
- Adding checks for telephony before showing RSSI tile Change-Id: I1dc4fb7a07d9693d8c6a96678ac9d4ff9abafe44
1 parent 79cf1a2 commit 43229d7

File tree

6 files changed

+104
-37
lines changed

6 files changed

+104
-37
lines changed

packages/SystemUI/res/layout/quick_settings_tile_ime.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,12 @@
1515
-->
1616
<TextView
1717
xmlns:android="http://schemas.android.com/apk/res/android"
18+
android:id="@+id/ime_textview"
1819
android:layout_width="match_parent"
1920
android:layout_height="match_parent"
21+
android:layout_gravity="center"
2022
android:gravity="center"
23+
android:drawableTop="@drawable/stat_sys_roaming_cdma_0"
2124
android:text="@string/quick_settings_ime_label"
22-
android:singleLine="true"
25+
android:textAppearance="@style/TextAppearance.QuickSettings.TileView"
2326
/>

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,10 @@ public void setBar(PanelBar panelBar) {
360360
mBar = panelBar;
361361
}
362362

363+
public void setImeWindowStatus(boolean visible) {
364+
// To be implemented by classes extending PanelView
365+
}
366+
363367
public void setup(NetworkController network, BluetoothController bt, BatteryController batt,
364368
LocationController location) {
365369
// To be implemented by classes extending PanelView

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1413,10 +1413,11 @@ public void setImeWindowStatus(IBinder token, int vis, int backDisposition) {
14131413
mCommandQueue.setNavigationIconHints(
14141414
altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT)
14151415
: (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT));
1416+
mSettingsPanel.setImeWindowStatus(vis > 0);
14161417
}
14171418

14181419
@Override
1419-
public void setHardKeyboardStatus(boolean available, boolean enabled) { }
1420+
public void setHardKeyboardStatus(boolean available, boolean enabled) {}
14201421

14211422
@Override
14221423
protected void tick(IBinder key, StatusBarNotification n, boolean firstTime) {

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

Lines changed: 54 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.android.systemui.statusbar.phone;
1818

1919
import android.app.Dialog;
20+
import android.app.PendingIntent;
2021
import android.content.BroadcastReceiver;
2122
import android.content.ComponentName;
2223
import android.content.Context;
@@ -32,8 +33,8 @@
3233
import android.hardware.display.WifiDisplay;
3334
import android.hardware.display.WifiDisplayStatus;
3435
import android.net.Uri;
35-
import android.os.UserHandle;
3636
import android.provider.ContactsContract;
37+
import android.provider.Settings;
3738
import android.view.LayoutInflater;
3839
import android.view.View;
3940
import android.view.ViewGroup;
@@ -103,6 +104,10 @@ void setBar(PanelBar bar) {
103104
mBar = bar;
104105
}
105106

107+
public void setImeWindowStatus(boolean visible) {
108+
mModel.onImeWindowStatusChanged(visible);
109+
}
110+
106111
void setup(NetworkController networkController, BluetoothController bluetoothController,
107112
BatteryController batteryController, LocationController locationController) {
108113
networkController.addNetworkSignalChangedCallback(mModel);
@@ -247,29 +252,31 @@ public void refreshView(QuickSettingsTileView view, State state) {
247252
});
248253
parent.addView(wifiTile);
249254

250-
// RSSI
251-
QuickSettingsTileView rssiTile = (QuickSettingsTileView)
252-
inflater.inflate(R.layout.quick_settings_tile, parent, false);
253-
rssiTile.setContent(R.layout.quick_settings_tile_rssi, inflater);
254-
rssiTile.setOnClickListener(new View.OnClickListener() {
255-
@Override
256-
public void onClick(View v) {
257-
Intent intent = new Intent();
258-
intent.setComponent(new ComponentName(
259-
"com.android.settings",
260-
"com.android.settings.Settings$DataUsageSummaryActivity"));
261-
startSettingsActivity(intent);
262-
}
263-
});
264-
mModel.addRSSITile(rssiTile, new QuickSettingsModel.RefreshCallback() {
265-
@Override
266-
public void refreshView(QuickSettingsTileView view, State state) {
267-
TextView tv = (TextView) view.findViewById(R.id.rssi_textview);
268-
tv.setCompoundDrawablesRelativeWithIntrinsicBounds(0, state.iconId, 0, 0);
269-
tv.setText(state.label);
270-
}
271-
});
272-
parent.addView(rssiTile);
255+
if (mModel.deviceSupportsTelephony()) {
256+
// RSSI
257+
QuickSettingsTileView rssiTile = (QuickSettingsTileView)
258+
inflater.inflate(R.layout.quick_settings_tile, parent, false);
259+
rssiTile.setContent(R.layout.quick_settings_tile_rssi, inflater);
260+
rssiTile.setOnClickListener(new View.OnClickListener() {
261+
@Override
262+
public void onClick(View v) {
263+
Intent intent = new Intent();
264+
intent.setComponent(new ComponentName(
265+
"com.android.settings",
266+
"com.android.settings.Settings$DataUsageSummaryActivity"));
267+
startSettingsActivity(intent);
268+
}
269+
});
270+
mModel.addRSSITile(rssiTile, new QuickSettingsModel.RefreshCallback() {
271+
@Override
272+
public void refreshView(QuickSettingsTileView view, State state) {
273+
TextView tv = (TextView) view.findViewById(R.id.rssi_textview);
274+
tv.setCompoundDrawablesRelativeWithIntrinsicBounds(0, state.iconId, 0, 0);
275+
tv.setText(state.label);
276+
}
277+
});
278+
parent.addView(rssiTile);
279+
}
273280

274281
// Battery
275282
QuickSettingsTileView batteryTile = (QuickSettingsTileView)
@@ -386,6 +393,29 @@ public void refreshView(QuickSettingsTileView view, State state) {
386393
});
387394
parent.addView(wifiDisplayTile);
388395

396+
// IME
397+
QuickSettingsTileView imeTile = (QuickSettingsTileView)
398+
inflater.inflate(R.layout.quick_settings_tile, parent, false);
399+
imeTile.setContent(R.layout.quick_settings_tile_ime, inflater);
400+
imeTile.setOnClickListener(new View.OnClickListener() {
401+
@Override
402+
public void onClick(View v) {
403+
try {
404+
mBar.collapseAllPanels(true);
405+
Intent intent = new Intent(Settings.ACTION_SHOW_INPUT_METHOD_PICKER);
406+
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0);
407+
pendingIntent.send();
408+
} catch (Exception e) {}
409+
}
410+
});
411+
mModel.addImeTile(imeTile, new QuickSettingsModel.RefreshCallback() {
412+
@Override
413+
public void refreshView(QuickSettingsTileView view, State state) {
414+
view.setVisibility(state.enabled ? View.VISIBLE : View.GONE);
415+
}
416+
});
417+
parent.addView(imeTile);
418+
389419
/*
390420
QuickSettingsTileView mediaTile = (QuickSettingsTileView)
391421
inflater.inflate(R.layout.quick_settings_tile, parent, false);

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

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import android.content.Context;
2424
import android.content.Intent;
2525
import android.content.IntentFilter;
26+
import android.content.pm.PackageManager;
2627
import android.content.res.Resources;
2728
import android.database.ContentObserver;
2829
import android.hardware.display.WifiDisplayStatus;
@@ -126,6 +127,10 @@ public void startObserving() {
126127
private RefreshCallback mLocationCallback;
127128
private State mLocationState = new State();
128129

130+
private QuickSettingsTileView mImeTile;
131+
private RefreshCallback mImeCallback;
132+
private State mImeState = new State();
133+
129134
public QuickSettingsModel(Context context) {
130135
mContext = context;
131136
mHandler = new Handler();
@@ -234,20 +239,26 @@ void addRSSITile(QuickSettingsTileView view, RefreshCallback cb) {
234239
mRSSICallback = cb;
235240
mRSSICallback.refreshView(mRSSITile, mRSSIState);
236241
}
242+
boolean deviceSupportsTelephony() {
243+
PackageManager pm = mContext.getPackageManager();
244+
return pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
245+
}
237246
// NetworkSignalChanged callback
238247
@Override
239248
public void onMobileDataSignalChanged(boolean enabled, String description) {
240-
// TODO: If view is in awaiting state, disable
241-
Resources r = mContext.getResources();
242-
// TODO: Check if RSSI is enabled
243-
mRSSIState.enabled = enabled;
244-
mRSSIState.iconId = (enabled ?
245-
R.drawable.ic_qs_rssi_enabled :
246-
R.drawable.ic_qs_rssi_normal);
247-
mRSSIState.label = (enabled ?
248-
description :
249-
r.getString(R.string.quick_settings_rssi_emergency_only));
250-
mRSSICallback.refreshView(mRSSITile, mRSSIState);
249+
if (deviceSupportsTelephony()) {
250+
// TODO: If view is in awaiting state, disable
251+
Resources r = mContext.getResources();
252+
// TODO: Check if RSSI is enabled
253+
mRSSIState.enabled = enabled;
254+
mRSSIState.iconId = (enabled ?
255+
R.drawable.ic_qs_rssi_enabled :
256+
R.drawable.ic_qs_rssi_normal);
257+
mRSSIState.label = (enabled ?
258+
description :
259+
r.getString(R.string.quick_settings_rssi_emergency_only));
260+
mRSSICallback.refreshView(mRSSITile, mRSSIState);
261+
}
251262
}
252263

253264
// Bluetooth
@@ -320,4 +331,15 @@ public void onWifiDisplayStateChanged(WifiDisplayStatus status) {
320331

321332
}
322333

334+
// IME
335+
void addImeTile(QuickSettingsTileView view, RefreshCallback cb) {
336+
mImeTile = view;
337+
mImeCallback = cb;
338+
mImeCallback.refreshView(mImeTile, mImeState);
339+
}
340+
void onImeWindowStatusChanged(boolean visible) {
341+
mImeState.enabled = visible;
342+
mImeCallback.refreshView(mImeTile, mImeState);
343+
}
344+
323345
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,13 @@ public void setBar(PanelBar panelBar) {
5858
}
5959
}
6060

61+
@Override
62+
public void setImeWindowStatus(boolean visible) {
63+
if (mQS != null) {
64+
mQS.setImeWindowStatus(visible);
65+
}
66+
}
67+
6168
@Override
6269
public void setup(NetworkController networkController, BluetoothController bluetoothController,
6370
BatteryController batteryController, LocationController locationController) {

0 commit comments

Comments
 (0)