diff options
| author | 2012-09-12 18:04:18 -0700 | |
|---|---|---|
| committer | 2012-09-12 18:06:23 -0700 | |
| commit | 43229d707515ce51c52f63e15257960c6d29162c (patch) | |
| tree | 311127b547ca1effdce412486585343aed6de80a | |
| parent | 79cf1a22914aa8ca245a6ca598348bbbb19ff9a6 (diff) | |
Adding IME tile.
- Adding checks for telephony before showing RSSI tile
Change-Id: I1dc4fb7a07d9693d8c6a96678ac9d4ff9abafe44
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); |