summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);