summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author tmfang <tmfang@google.com> 2018-12-20 19:21:04 +0800
committer tmfang <tmfang@google.com> 2019-01-04 11:01:16 +0800
commitff3ba83410dcf7fd7feebdcf8703885e1a53b6d1 (patch)
tree24710196d73a9eedb709ae7246dd6399b29cbc86
parentd8551b11beac87a1c215dd9306cafd6d34de851b (diff)
Add an empty text when there is no bar view
Bar chart only shows title and empty text in this BarChartPreference when user didn't add any bar view for bar chart. Test: visual and robotest Change-Id: I66f7fc5376cd7f996f3cbe7a36455127c4e4d81b Fixes: 117623686
-rw-r--r--packages/SettingsLib/BarChartPreference/res/layout/settings_bar_chart.xml62
-rw-r--r--packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarChartPreference.java22
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java22
3 files changed, 83 insertions, 23 deletions
diff --git a/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_chart.xml b/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_chart.xml
index 1a4d7b7dee14..b063e13bcc12 100644
--- a/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_chart.xml
+++ b/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_chart.xml
@@ -33,33 +33,49 @@
android:textAppearance="@style/BarChart.Text.HeaderTitle"/>
<LinearLayout
+ android:id="@+id/bar_views_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:gravity="center|bottom">
+ android:gravity="center"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center|bottom">
- <com.android.settingslib.widget.BarView
- android:id="@+id/bar_view1"
- style="@style/BarViewStyle"
- settings:barColor="#FA7B17"/>
- <com.android.settingslib.widget.BarView
- android:id="@+id/bar_view2"
- style="@style/BarViewStyle"
- settings:barColor="#F439A0"/>
- <com.android.settingslib.widget.BarView
- android:id="@+id/bar_view3"
- style="@style/BarViewStyle"
- settings:barColor="#A142F4"/>
- <com.android.settingslib.widget.BarView
- android:id="@+id/bar_view4"
- style="@style/BarViewStyle"
- settings:barColor="#24C1E0"/>
+ <com.android.settingslib.widget.BarView
+ android:id="@+id/bar_view1"
+ style="@style/BarViewStyle"
+ settings:barColor="#FA7B17"/>
+ <com.android.settingslib.widget.BarView
+ android:id="@+id/bar_view2"
+ style="@style/BarViewStyle"
+ settings:barColor="#F439A0"/>
+ <com.android.settingslib.widget.BarView
+ android:id="@+id/bar_view3"
+ style="@style/BarViewStyle"
+ settings:barColor="#A142F4"/>
+ <com.android.settingslib.widget.BarView
+ android:id="@+id/bar_view4"
+ style="@style/BarViewStyle"
+ settings:barColor="#24C1E0"/>
+ </LinearLayout>
+
+ <Button
+ android:id="@+id/bar_chart_details"
+ style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored"
+ android:layout_width="wrap_content"
+ android:layout_height="48dp"
+ android:gravity="center"/>
</LinearLayout>
- <Button
- android:id="@+id/bar_chart_details"
- style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored"
- android:layout_width="wrap_content"
- android:layout_height="48dp"
- android:gravity="center"/>
+ <TextView
+ android:id="@+id/empty_view"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/settings_bar_view_max_height"
+ android:gravity="center"
+ android:visibility="gone"
+ android:textAppearance="@style/BarChart.Text.Summary"/>
</LinearLayout>
diff --git a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarChartPreference.java b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarChartPreference.java
index ba82a5b44348..eed66e94a9ef 100644
--- a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarChartPreference.java
+++ b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarChartPreference.java
@@ -140,7 +140,17 @@ public class BarChartPreference extends Preference {
holder.setDividerAllowedAbove(true);
holder.setDividerAllowedBelow(true);
+ // We must show title of bar chart.
bindChartTitleView(holder);
+
+ final BarViewInfo[] barViewInfos = mBarChartInfo.getBarViewInfos();
+ // If there is no any bar view, we just show an empty text.
+ if (barViewInfos == null || barViewInfos.length == 0) {
+ setEmptyViewVisible(holder, true /* visible */);
+ return;
+ }
+ setEmptyViewVisible(holder, false /* visible */);
+
bindChartDetailsView(holder);
updateBarChart(holder);
}
@@ -206,4 +216,16 @@ public class BarChartPreference extends Preference {
barView.setNormalizedHeight(barView.getHeight() * unit);
}
}
+
+ private void setEmptyViewVisible(PreferenceViewHolder holder, boolean visible) {
+ final View barViewsContainer = holder.findViewById(R.id.bar_views_container);
+ final TextView emptyView = (TextView) holder.findViewById(R.id.empty_view);
+ final int emptyTextRes = mBarChartInfo.getEmptyText();
+
+ if (emptyTextRes != 0) {
+ emptyView.setText(emptyTextRes);
+ }
+ emptyView.setVisibility(visible ? View.VISIBLE : View.GONE);
+ barViewsContainer.setVisibility(visible ? View.GONE : View.VISIBLE);
+ }
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java
index 83b9f810e28b..cf6137d47bb0 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java
@@ -89,10 +89,30 @@ public class BarChartPreferenceTest {
}
@Test
+ public void initializeBarChart_noBarViewSet_shouldShowTitleAndEmptyView() {
+ final BarChartInfo barChartInfo = new BarChartInfo.Builder()
+ .setTitle(R.string.debug_app)
+ .setEmptyText(R.string.debug_app)
+ .build();
+
+ mPreference.initializeBarChart(barChartInfo);
+ // We don't add any bar view yet.
+ mPreference.onBindViewHolder(mHolder);
+
+ assertThat(mBarChartView.findViewById(R.id.bar_chart_title).getVisibility())
+ .isEqualTo(View.VISIBLE);
+ assertThat(mBarChartView.findViewById(R.id.empty_view).getVisibility())
+ .isEqualTo(View.VISIBLE);
+ assertThat(mBarChartView.findViewById(R.id.bar_views_container).getVisibility())
+ .isEqualTo(View.GONE);
+ }
+
+ @Test
public void initializeBarChart_detailsSet_shouldShowBarChartDetailsView() {
final BarChartInfo barChartInfo = new BarChartInfo.Builder()
.setTitle(R.string.debug_app)
.setDetails(R.string.debug_app)
+ .addBarViewInfo(new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app))
.build();
mPreference.initializeBarChart(barChartInfo);
@@ -107,6 +127,7 @@ public class BarChartPreferenceTest {
// We don't call BarChartInfo.Builder#setDetails yet.
final BarChartInfo barChartInfo = new BarChartInfo.Builder()
.setTitle(R.string.debug_app)
+ .addBarViewInfo(new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app))
.build();
mPreference.initializeBarChart(barChartInfo);
@@ -122,6 +143,7 @@ public class BarChartPreferenceTest {
.setDetails(R.string.debug_app)
.setDetailsOnClickListener(v -> {
})
+ .addBarViewInfo(new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app))
.build();
mPreference.initializeBarChart(barChartInfo);