Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff3ba834 authored by tmfang's avatar tmfang
Browse files

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
parent d8551b11
Loading
Loading
Loading
Loading
+39 −23
Original line number Diff line number Diff line
@@ -32,6 +32,13 @@
        android:gravity="center"
        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"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
@@ -61,5 +68,14 @@
            android:layout_width="wrap_content"
            android:layout_height="48dp"
            android:gravity="center"/>
    </LinearLayout>

    <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>
+22 −0
Original line number Diff line number Diff line
@@ -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);
    }
}
+22 −0
Original line number Diff line number Diff line
@@ -88,11 +88,31 @@ public class BarChartPreferenceTest {
        assertThat(titleView.getText()).isEqualTo(mContext.getText(R.string.debug_app));
    }

    @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);