diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java index 54a2273bf076f..b3ab3857374ef 100755 --- a/core/java/android/provider/ContactsContract.java +++ b/core/java/android/provider/ContactsContract.java @@ -37,6 +37,7 @@ import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.os.RemoteException; +import android.os.UserHandle; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Pair; @@ -7744,7 +7745,7 @@ public final class ContactsContract { intent.setSourceBounds(target); intent.putExtra(EXTRA_MODE, mode); intent.putExtra(EXTRA_EXCLUDE_MIMES, excludeMimes); - context.startActivity(intent); + context.startActivityAsUser(intent, new UserHandle(UserHandle.USER_CURRENT)); } } diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_off.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_off.png index d5650a76bfe95..7c6ca7534d817 100644 Binary files a/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_off.png and b/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_off.png differ diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_on.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_on.png index 7d6fed5bbd14f..ff0ba07cde09b 100644 Binary files a/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_on.png and b/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_on.png differ diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_off.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_off.png index 19e4e409e1be1..61eff946df08e 100644 Binary files a/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_off.png and b/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_off.png differ diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_on.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_on.png index ec30791f39c95..b480a80bc638d 100644 Binary files a/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_on.png and b/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_on.png differ diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_off.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_off.png index 65a873dd5b3d8..b4d9175a7a764 100644 Binary files a/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_off.png and b/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_off.png differ diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_on.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_on.png index 7ac301548e2b4..598d9676cb6bd 100644 Binary files a/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_on.png and b/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_on.png differ diff --git a/packages/SystemUI/res/layout/quick_settings_tile_airplane.xml b/packages/SystemUI/res/layout/quick_settings_tile_airplane.xml index 6ae10d5db8926..ac87496c12f04 100644 --- a/packages/SystemUI/res/layout/quick_settings_tile_airplane.xml +++ b/packages/SystemUI/res/layout/quick_settings_tile_airplane.xml @@ -21,5 +21,4 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" - android:text="@string/quick_settings_airplane_mode_label" /> \ No newline at end of file diff --git a/packages/SystemUI/res/layout/quick_settings_tile_bluetooth.xml b/packages/SystemUI/res/layout/quick_settings_tile_bluetooth.xml index 565055c594e1f..2f3a9c6fe722d 100644 --- a/packages/SystemUI/res/layout/quick_settings_tile_bluetooth.xml +++ b/packages/SystemUI/res/layout/quick_settings_tile_bluetooth.xml @@ -21,5 +21,4 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" - android:text="@string/quick_settings_bluetooth_label" /> \ No newline at end of file diff --git a/packages/SystemUI/res/layout/quick_settings_tile_brightness.xml b/packages/SystemUI/res/layout/quick_settings_tile_brightness.xml index ac872e63e2f40..5b3ce1f6f8620 100644 --- a/packages/SystemUI/res/layout/quick_settings_tile_brightness.xml +++ b/packages/SystemUI/res/layout/quick_settings_tile_brightness.xml @@ -22,5 +22,4 @@ android:layout_gravity="center" android:gravity="center" android:drawableTop="@drawable/ic_qs_brightness_auto_off" - android:text="@string/quick_settings_brightness_label" /> \ No newline at end of file diff --git a/packages/SystemUI/res/layout/quick_settings_tile_rotation_lock.xml b/packages/SystemUI/res/layout/quick_settings_tile_rotation_lock.xml index 4dbf6a0163562..6aecaea1380dc 100644 --- a/packages/SystemUI/res/layout/quick_settings_tile_rotation_lock.xml +++ b/packages/SystemUI/res/layout/quick_settings_tile_rotation_lock.xml @@ -21,5 +21,4 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" - android:text="@string/quick_settings_rotation_unlocked_label" /> \ No newline at end of file diff --git a/packages/SystemUI/res/layout/quick_settings_tile_settings.xml b/packages/SystemUI/res/layout/quick_settings_tile_settings.xml index 7026ebc6e90a5..d155935b09cbb 100644 --- a/packages/SystemUI/res/layout/quick_settings_tile_settings.xml +++ b/packages/SystemUI/res/layout/quick_settings_tile_settings.xml @@ -16,10 +16,10 @@ \ No newline at end of file diff --git a/packages/SystemUI/res/layout/quick_settings_tile_user.xml b/packages/SystemUI/res/layout/quick_settings_tile_user.xml index 08e8e20fdc76a..1732f6d289dc1 100644 --- a/packages/SystemUI/res/layout/quick_settings_tile_user.xml +++ b/packages/SystemUI/res/layout/quick_settings_tile_user.xml @@ -18,6 +18,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + 124dp + 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 7077018af8377..1ee1c41980a41 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java @@ -31,6 +31,7 @@ import android.content.IntentFilter; import android.content.Loader; import android.content.res.Resources; import android.database.Cursor; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LevelListDrawable; import android.hardware.display.DisplayManager; @@ -40,6 +41,7 @@ import android.os.Handler; import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserHandle; +import android.os.UserManager; import android.provider.ContactsContract; import android.provider.Settings; import android.view.LayoutInflater; @@ -160,6 +162,8 @@ class QuickSettings { } private void queryForUserInformation() { + System.out.println("queryForUserInformation"); + Uri userContactUri = Uri.withAppendedPath( ContactsContract.Profile.CONTENT_URI, ContactsContract.Contacts.Data.CONTENT_DIRECTORY); @@ -184,9 +188,11 @@ class QuickSettings { @Override public void onLoadComplete(Loader loader, Cursor cursor) { + UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); if (cursor != null && cursor.moveToFirst()) { String name = cursor.getString(0); // DISPLAY_NAME - mModel.setUserTileInfo(name, null); + BitmapDrawable d = new BitmapDrawable(userManager.getUserIcon(userManager.getUserHandle())); + mModel.setUserTileInfo(name, d); /* byte[] photoData = cursor.getBlob(0); Bitmap b = @@ -248,10 +254,11 @@ class QuickSettings { @Override public void refreshView(QuickSettingsTileView view, State state) { UserState us = (UserState) state; + ImageView iv = (ImageView) view.findViewById(R.id.user_imageview); TextView tv = (TextView) view.findViewById(R.id.user_textview); tv.setText(state.label); if (us.avatar != null) { - tv.setCompoundDrawables(null, us.avatar, null, null); + iv.setImageDrawable(us.avatar); } } }); @@ -290,6 +297,13 @@ class QuickSettings { startSettingsActivity(android.provider.Settings.ACTION_SETTINGS); } }); + mModel.addSettingsTile(settingsTile, new QuickSettingsModel.RefreshCallback() { + @Override + public void refreshView(QuickSettingsTileView view, State state) { + TextView tv = (TextView) view.findViewById(R.id.settings_tileview); + tv.setText(state.label); + } + }); parent.addView(settingsTile); mDynamicSpannedTiles.add(settingsTile); } @@ -418,6 +432,7 @@ class QuickSettings { public void refreshView(QuickSettingsTileView view, State state) { TextView tv = (TextView) view.findViewById(R.id.airplane_mode_textview); tv.setCompoundDrawablesWithIntrinsicBounds(0, state.iconId, 0, 0); + tv.setText(state.label); } }); parent.addView(airplaneTile); @@ -476,6 +491,7 @@ class QuickSettings { public void refreshView(QuickSettingsTileView view, State state) { TextView tv = (TextView) view.findViewById(R.id.brightness_textview); tv.setCompoundDrawablesWithIntrinsicBounds(0, state.iconId, 0, 0); + tv.setText(state.label); dismissBrightnessDialog(mBrightnessDialogShortTimeout); } }); @@ -614,6 +630,9 @@ class QuickSettings { void updateResources() { Resources r = mContext.getResources(); + // Update the model + mModel.updateResources(); + // Update the User, Time, and Settings tiles spans, and reset everything else int span = r.getInteger(R.integer.quick_settings_user_time_settings_tile_span); for (QuickSettingsTileView v : mDynamicSpannedTiles) { 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 04633bfe5e138..a4caabe4d1575 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java @@ -188,6 +188,10 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, private RefreshCallback mBugreportCallback; private State mBugreportState = new State(); + private QuickSettingsTileView mSettingsTile; + private RefreshCallback mSettingsCallback; + private State mSettingsState = new State(); + public QuickSettingsModel(Context context) { mContext = context; mHandler = new Handler(); @@ -201,6 +205,26 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, context.registerReceiver(mAlarmIntentReceiver, alarmIntentFilter); } + void updateResources() { + refreshSettingsTile(); + refreshBatteryTile(); + refreshBluetoothTile(); + refreshBrightnessTile(); + refreshRotationLockTile(); + } + + // Settings + void addSettingsTile(QuickSettingsTileView view, RefreshCallback cb) { + mSettingsTile = view; + mSettingsCallback = cb; + refreshSettingsTile(); + } + void refreshSettingsTile() { + Resources r = mContext.getResources(); + mSettingsState.label = r.getString(R.string.quick_settings_settings_label); + mSettingsCallback.refreshView(mSettingsTile, mSettingsState); + } + // User void addUserTile(QuickSettingsTileView view, RefreshCallback cb) { mUserTile = view; @@ -250,7 +274,9 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } }); mAirplaneModeCallback = cb; - mAirplaneModeCallback.refreshView(mAirplaneModeTile, mAirplaneModeState); + int airplaneMode = Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.AIRPLANE_MODE_ON, 0); + onAirplaneModeChanged(airplaneMode != 0); } private void setAirplaneModeState(boolean enabled) { // TODO: Sets the view to be "awaiting" if not already awaiting @@ -273,6 +299,7 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, mAirplaneModeState.iconId = (enabled ? R.drawable.ic_qs_airplane_on : R.drawable.ic_qs_airplane_off); + mAirplaneModeState.label = r.getString(R.string.quick_settings_airplane_mode_label); mAirplaneModeCallback.refreshView(mAirplaneModeTile, mAirplaneModeState); } @@ -307,7 +334,7 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, Resources r = mContext.getResources(); mWifiState.enabled = enabled; boolean wifiConnected = enabled && (wifiSignalIconId > 0) && (enabledDesc != null); - boolean wifiNotConnected = enabled && (enabledDesc == null); + boolean wifiNotConnected = (wifiSignalIconId > 0) && (enabledDesc == null); if (wifiConnected) { mWifiState.iconId = wifiSignalIconId; mWifiState.label = removeDoubleQuotes(enabledDesc); @@ -377,6 +404,11 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } mBluetoothCallback.refreshView(mBluetoothTile, mBluetoothState); } + void refreshBluetoothTile() { + if (mBluetoothTile != null) { + onBluetoothStateChange(mBluetoothState.enabled); + } + } // Battery void addBatteryTile(QuickSettingsTileView view, RefreshCallback cb) { @@ -391,6 +423,9 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, mBatteryState.pluggedIn = pluggedIn; mBatteryCallback.refreshView(mBatteryTile, mBatteryState); } + void refreshBatteryTile() { + mBatteryCallback.refreshView(mBatteryTile, mBatteryState); + } // Location void addLocationTile(QuickSettingsTileView view, RefreshCallback cb) { @@ -544,6 +579,11 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, mRotationLockCallback.refreshView(mRotationLockTile, mRotationLockState); } } + void refreshRotationLockTile() { + if (mRotationLockTile != null) { + onRotationLockChanged(); + } + } // Brightness void addBrightnessTile(QuickSettingsTileView view, RefreshCallback cb) { @@ -553,6 +593,7 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } @Override public void onBrightnessLevelChanged() { + Resources r = mContext.getResources(); int mode = Settings.System.getInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); @@ -561,7 +602,11 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, mBrightnessState.iconId = mBrightnessState.autoBrightness ? R.drawable.ic_qs_brightness_auto_on : R.drawable.ic_qs_brightness_auto_off; + mBrightnessState.label = r.getString(R.string.quick_settings_brightness_label); mBrightnessCallback.refreshView(mBrightnessTile, mBrightnessState); } + void refreshBrightnessTile() { + onBrightnessLevelChanged(); + } } \ No newline at end of file