summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Winson Chung <winsonc@google.com> 2012-09-12 18:04:18 -0700
committer Winson Chung <winsonc@google.com> 2012-09-12 18:06:23 -0700
commit43229d707515ce51c52f63e15257960c6d29162c (patch)
tree311127b547ca1effdce412486585343aed6de80a
parent79cf1a22914aa8ca245a6ca598348bbbb19ff9a6 (diff)
Adding IME tile.
- Adding checks for telephony before showing RSSI tile Change-Id: I1dc4fb7a07d9693d8c6a96678ac9d4ff9abafe44
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_ime.xml5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java78
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java44
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java7
6 files changed, 104 insertions, 37 deletions
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_ime.xml b/packages/SystemUI/res/layout/quick_settings_tile_ime.xml
index 93db6db87ab0..528b54f5d43b 100644
--- a/packages/SystemUI/res/layout/quick_settings_tile_ime.xml
+++ b/packages/SystemUI/res/layout/quick_settings_tile_ime.xml
@@ -15,9 +15,12 @@
-->
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/ime_textview"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:layout_gravity="center"
android:gravity="center"
+ android:drawableTop="@drawable/stat_sys_roaming_cdma_0"
android:text="@string/quick_settings_ime_label"
- android:singleLine="true"
+ android:textAppearance="@style/TextAppearance.QuickSettings.TileView"
/> \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index bee63ee743ca..91f29a2b47eb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -360,6 +360,10 @@ public class PanelView extends FrameLayout {
mBar = panelBar;
}
+ public void setImeWindowStatus(boolean visible) {
+ // To be implemented by classes extending PanelView
+ }
+
public void setup(NetworkController network, BluetoothController bt, BatteryController batt,
LocationController location) {
// To be implemented by classes extending PanelView
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 6231d0dc0471..b335b5ff6b34 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -1413,10 +1413,11 @@ public class PhoneStatusBar extends BaseStatusBar {
mCommandQueue.setNavigationIconHints(
altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT)
: (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT));
+ mSettingsPanel.setImeWindowStatus(vis > 0);
}
@Override
- public void setHardKeyboardStatus(boolean available, boolean enabled) { }
+ public void setHardKeyboardStatus(boolean available, boolean enabled) {}
@Override
protected void tick(IBinder key, StatusBarNotification n, boolean firstTime) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java
index 1c3cb2eea497..39e142980483 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.phone;
import android.app.Dialog;
+import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -32,8 +33,8 @@ import android.hardware.display.DisplayManager;
import android.hardware.display.WifiDisplay;
import android.hardware.display.WifiDisplayStatus;
import android.net.Uri;
-import android.os.UserHandle;
import android.provider.ContactsContract;
+import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -103,6 +104,10 @@ class QuickSettings {
mBar = bar;
}
+ public void setImeWindowStatus(boolean visible) {
+ mModel.onImeWindowStatusChanged(visible);
+ }
+
void setup(NetworkController networkController, BluetoothController bluetoothController,
BatteryController batteryController, LocationController locationController) {
networkController.addNetworkSignalChangedCallback(mModel);
@@ -247,29 +252,31 @@ class QuickSettings {
});
parent.addView(wifiTile);
- // RSSI
- QuickSettingsTileView rssiTile = (QuickSettingsTileView)
- inflater.inflate(R.layout.quick_settings_tile, parent, false);
- rssiTile.setContent(R.layout.quick_settings_tile_rssi, inflater);
- rssiTile.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent();
- intent.setComponent(new ComponentName(
- "com.android.settings",
- "com.android.settings.Settings$DataUsageSummaryActivity"));
- startSettingsActivity(intent);
- }
- });
- mModel.addRSSITile(rssiTile, new QuickSettingsModel.RefreshCallback() {
- @Override
- public void refreshView(QuickSettingsTileView view, State state) {
- TextView tv = (TextView) view.findViewById(R.id.rssi_textview);
- tv.setCompoundDrawablesRelativeWithIntrinsicBounds(0, state.iconId, 0, 0);
- tv.setText(state.label);
- }
- });
- parent.addView(rssiTile);
+ if (mModel.deviceSupportsTelephony()) {
+ // RSSI
+ QuickSettingsTileView rssiTile = (QuickSettingsTileView)
+ inflater.inflate(R.layout.quick_settings_tile, parent, false);
+ rssiTile.setContent(R.layout.quick_settings_tile_rssi, inflater);
+ rssiTile.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent();
+ intent.setComponent(new ComponentName(
+ "com.android.settings",
+ "com.android.settings.Settings$DataUsageSummaryActivity"));
+ startSettingsActivity(intent);
+ }
+ });
+ mModel.addRSSITile(rssiTile, new QuickSettingsModel.RefreshCallback() {
+ @Override
+ public void refreshView(QuickSettingsTileView view, State state) {
+ TextView tv = (TextView) view.findViewById(R.id.rssi_textview);
+ tv.setCompoundDrawablesRelativeWithIntrinsicBounds(0, state.iconId, 0, 0);
+ tv.setText(state.label);
+ }
+ });
+ parent.addView(rssiTile);
+ }
// Battery
QuickSettingsTileView batteryTile = (QuickSettingsTileView)
@@ -386,6 +393,29 @@ class QuickSettings {
});
parent.addView(wifiDisplayTile);
+ // IME
+ QuickSettingsTileView imeTile = (QuickSettingsTileView)
+ inflater.inflate(R.layout.quick_settings_tile, parent, false);
+ imeTile.setContent(R.layout.quick_settings_tile_ime, inflater);
+ imeTile.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ try {
+ mBar.collapseAllPanels(true);
+ Intent intent = new Intent(Settings.ACTION_SHOW_INPUT_METHOD_PICKER);
+ PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0);
+ pendingIntent.send();
+ } catch (Exception e) {}
+ }
+ });
+ mModel.addImeTile(imeTile, new QuickSettingsModel.RefreshCallback() {
+ @Override
+ public void refreshView(QuickSettingsTileView view, State state) {
+ view.setVisibility(state.enabled ? View.VISIBLE : View.GONE);
+ }
+ });
+ parent.addView(imeTile);
+
/*
QuickSettingsTileView mediaTile = (QuickSettingsTileView)
inflater.inflate(R.layout.quick_settings_tile, parent, false);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
index aa40f3c90c43..ab3e66e31e02 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
@@ -23,6 +23,7 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.hardware.display.WifiDisplayStatus;
@@ -126,6 +127,10 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
private RefreshCallback mLocationCallback;
private State mLocationState = new State();
+ private QuickSettingsTileView mImeTile;
+ private RefreshCallback mImeCallback;
+ private State mImeState = new State();
+
public QuickSettingsModel(Context context) {
mContext = context;
mHandler = new Handler();
@@ -234,20 +239,26 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
mRSSICallback = cb;
mRSSICallback.refreshView(mRSSITile, mRSSIState);
}
+ boolean deviceSupportsTelephony() {
+ PackageManager pm = mContext.getPackageManager();
+ return pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
+ }
// NetworkSignalChanged callback
@Override
public void onMobileDataSignalChanged(boolean enabled, String description) {
- // TODO: If view is in awaiting state, disable
- Resources r = mContext.getResources();
- // TODO: Check if RSSI is enabled
- mRSSIState.enabled = enabled;
- mRSSIState.iconId = (enabled ?
- R.drawable.ic_qs_rssi_enabled :
- R.drawable.ic_qs_rssi_normal);
- mRSSIState.label = (enabled ?
- description :
- r.getString(R.string.quick_settings_rssi_emergency_only));
- mRSSICallback.refreshView(mRSSITile, mRSSIState);
+ if (deviceSupportsTelephony()) {
+ // TODO: If view is in awaiting state, disable
+ Resources r = mContext.getResources();
+ // TODO: Check if RSSI is enabled
+ mRSSIState.enabled = enabled;
+ mRSSIState.iconId = (enabled ?
+ R.drawable.ic_qs_rssi_enabled :
+ R.drawable.ic_qs_rssi_normal);
+ mRSSIState.label = (enabled ?
+ description :
+ r.getString(R.string.quick_settings_rssi_emergency_only));
+ mRSSICallback.refreshView(mRSSITile, mRSSIState);
+ }
}
// Bluetooth
@@ -320,4 +331,15 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
}
+ // IME
+ void addImeTile(QuickSettingsTileView view, RefreshCallback cb) {
+ mImeTile = view;
+ mImeCallback = cb;
+ mImeCallback.refreshView(mImeTile, mImeState);
+ }
+ void onImeWindowStatusChanged(boolean visible) {
+ mImeState.enabled = visible;
+ mImeCallback.refreshView(mImeTile, mImeState);
+ }
+
} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java
index f896d5791c36..4a7a42417cfe 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java
@@ -59,6 +59,13 @@ public class SettingsPanelView extends PanelView {
}
@Override
+ public void setImeWindowStatus(boolean visible) {
+ if (mQS != null) {
+ mQS.setImeWindowStatus(visible);
+ }
+ }
+
+ @Override
public void setup(NetworkController networkController, BluetoothController bluetoothController,
BatteryController batteryController, LocationController locationController) {
super.setup(networkController, bluetoothController, batteryController, locationController);