diff options
author | Jorim Jaggi <jjaggi@google.com> | 2014-12-11 21:00:12 +0100 |
---|---|---|
committer | Jorim Jaggi <jjaggi@google.com> | 2014-12-11 21:51:30 +0100 |
commit | 0ed01deb2fc99603a33f968044703a740673c7b3 (patch) | |
tree | efddf4a8eb60d08d4a957bfa3249bd7f4ba0d49c | |
parent | 43f4372c0aa87171f7e8bc3f20f7d2a78e6c6593 (diff) | |
download | frameworks_base-0ed01deb2fc99603a33f968044703a740673c7b3.zip frameworks_base-0ed01deb2fc99603a33f968044703a740673c7b3.tar.gz frameworks_base-0ed01deb2fc99603a33f968044703a740673c7b3.tar.bz2 |
Limit item count in QS detail
- Introduce a maximum number of items to be shown in QS detail view
depending on the device configuration.
- For Wifi and Cast, make the panel exactly that height as we would
show the maximum count of items, in order to prevent that the
buttons jump around.
Bug: 18665311
Change-Id: I7c0c383a902d295f1b486b8a074e15b990fbe562
5 files changed, 50 insertions, 1 deletions
diff --git a/packages/SystemUI/res/layout/qs_detail_items.xml b/packages/SystemUI/res/layout/qs_detail_items.xml index f61a43c..c22e42c 100644 --- a/packages/SystemUI/res/layout/qs_detail_items.xml +++ b/packages/SystemUI/res/layout/qs_detail_items.xml @@ -49,4 +49,8 @@ android:textAppearance="@style/TextAppearance.QS.DetailEmpty" /> </LinearLayout> + <View + android:id="@+id/min_height_spacer" + android:layout_width="match_parent" + android:layout_height="0dp"/> </com.android.systemui.qs.QSDetailItems>
\ No newline at end of file diff --git a/packages/SystemUI/res/values-h560dp/config.xml b/packages/SystemUI/res/values-h560dp/config.xml new file mode 100644 index 0000000..f210d7b --- /dev/null +++ b/packages/SystemUI/res/values-h560dp/config.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- + ~ Copyright (C) 2014 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License + --> + +<resources> + <!-- The maximum number of items to be displayed in quick settings --> + <integer name="quick_settings_detail_max_item_count">8</integer> +</resources> + diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 4d76f38..5b18b24 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -131,6 +131,9 @@ <integer name="quick_settings_brightness_dialog_short_timeout">2000</integer> <integer name="quick_settings_brightness_dialog_long_timeout">4000</integer> + <!-- The maximum number of items to be displayed in quick settings --> + <integer name="quick_settings_detail_max_item_count">7</integer> + <integer name="blinds_pop_duration_ms">10</integer> <!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? --> diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetailItems.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetailItems.java index a311d6e..9155102 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSDetailItems.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetailItems.java @@ -51,8 +51,10 @@ public class QSDetailItems extends FrameLayout { private boolean mItemsVisible = true; private LinearLayout mItems; private View mEmpty; + private View mMinHeightSpacer; private TextView mEmptyText; private ImageView mEmptyIcon; + private int mMaxItems; public QSDetailItems(Context context, AttributeSet attrs) { super(context, attrs); @@ -77,6 +79,12 @@ public class QSDetailItems extends FrameLayout { mEmpty.setVisibility(GONE); mEmptyText = (TextView) mEmpty.findViewById(android.R.id.title); mEmptyIcon = (ImageView) mEmpty.findViewById(android.R.id.icon); + mMinHeightSpacer = findViewById(R.id.min_height_spacer); + + // By default, a detail item view has fixed size. + mMaxItems = getResources().getInteger( + R.integer.quick_settings_detail_max_item_count); + setMinHeightInItems(mMaxItems); } @Override @@ -102,6 +110,16 @@ public class QSDetailItems extends FrameLayout { mEmptyText.setText(text); } + /** + * Set the minimum height of this detail view, in item count. + */ + public void setMinHeightInItems(int minHeightInItems) { + ViewGroup.LayoutParams lp = mMinHeightSpacer.getLayoutParams(); + lp.height = minHeightInItems * getResources().getDimensionPixelSize( + R.dimen.qs_detail_item_height); + mMinHeightSpacer.setLayoutParams(lp); + } + @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); @@ -135,7 +153,7 @@ public class QSDetailItems extends FrameLayout { } private void handleSetItems(Item[] items) { - final int itemCount = items != null ? items.length : 0; + final int itemCount = items != null ? Math.min(items.length, mMaxItems) : 0; mEmpty.setVisibility(itemCount == 0 ? VISIBLE : GONE); mItems.setVisibility(itemCount == 0 ? GONE : VISIBLE); for (int i = mItems.getChildCount() - 1; i >= itemCount; i--) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java index 1bc1d77..c15566f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java @@ -185,6 +185,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { mItems.setEmptyState(R.drawable.ic_qs_bluetooth_detail_empty, R.string.quick_settings_bluetooth_detail_empty_text); mItems.setCallback(this); + mItems.setMinHeightInItems(0); updateItems(); setItemsVisible(mState.value); return mItems; |