From 138cd2710919db4b5db55797dbdff5f4ebef3846 Mon Sep 17 00:00:00 2001 From: jacquarg Date: Mon, 28 Mar 2022 09:11:01 +0200 Subject: 5161 display message when trackers graphs empty. --- .../features/dashboard/DashboardFragment.kt | 30 ++++++++++++------- .../features/trackers/TrackersFragment.kt | 17 +++++++---- .../e/privacycentralapp/widget/WidgetUI.kt | 35 ++++++++++++++++------ 3 files changed, 58 insertions(+), 24 deletions(-) (limited to 'app/src/main/java/foundation') diff --git a/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt b/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt index f5cb2e1..dec3234 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt @@ -23,6 +23,7 @@ import android.text.Html import android.text.Html.FROM_HTML_MODE_LEGACY import android.view.View import androidx.core.content.ContextCompat.getColor +import androidx.core.view.isVisible import androidx.fragment.app.activityViewModels import androidx.fragment.app.add import androidx.fragment.app.commit @@ -216,16 +217,25 @@ class DashboardFragment : ) ) - state.dayStatistics?.let { graphHolder.data = it } - state.dayLabels?.let { graphHolder.labels = it } - - binding.graphLegend.text = Html.fromHtml( - getString( - R.string.dashboard_graph_trackers_legend, - state.activeTrackersCount?.toString() ?: "No" - ), - FROM_HTML_MODE_LEGACY - ) + if (state.dayStatistics?.all { it == 0 } == true) { + binding.graph.visibility = View.INVISIBLE + binding.graphLegend.isVisible = false + binding.graphEmpty.isVisible = true + } else { + binding.graph.isVisible = true + binding.graphLegend.isVisible = true + binding.graphEmpty.isVisible = false + state.dayStatistics?.let { graphHolder.data = it } + state.dayLabels?.let { graphHolder.labels = it } + + binding.graphLegend.text = Html.fromHtml( + getString( + R.string.dashboard_graph_trackers_legend, + state.activeTrackersCount?.toString() ?: "No" + ), + FROM_HTML_MODE_LEGACY + ) + } if (state.activeTrackersCount != null && state.trackersCount != null) { binding.amITracked.subTitle = getString(R.string.dashboard_am_i_tracked_subtitle, state.trackersCount, state.activeTrackersCount) diff --git a/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFragment.kt b/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFragment.kt index 0f686b4..c0212a5 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFragment.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFragment.kt @@ -18,9 +18,9 @@ package foundation.e.privacycentralapp.features.trackers import android.os.Bundle -import android.util.Log import android.view.View import android.widget.Toast +import androidx.core.view.isVisible import androidx.fragment.app.commit import androidx.fragment.app.replace import androidx.fragment.app.viewModels @@ -114,7 +114,6 @@ class TrackersFragment : } override fun onResume() { - Log.d("TestCounts", "OnResume") super.onResume() viewModel.submitAction(TrackersFeature.Action.FetchStatistics) } @@ -138,9 +137,17 @@ class TrackersFragment : graphHolder: GraphHolder, graphBinding: TrackersItemGraphBinding ) { - graphHolder.data = statistics.calls - graphHolder.labels = statistics.periods - graphBinding.trackersCountLabel.text = getString(R.string.trackers_count_label, statistics.trackersCount) + if (statistics.calls.all { it == 0 }) { + graphBinding.graph.visibility = View.INVISIBLE + graphBinding.graphEmpty.isVisible = true + } else { + graphBinding.graph.isVisible = true + graphBinding.graphEmpty.isVisible = false + graphHolder.data = statistics.calls + graphHolder.labels = statistics.periods + graphBinding.trackersCountLabel.text = + getString(R.string.trackers_count_label, statistics.trackersCount) + } } override fun actions(): Flow = viewModel.actions diff --git a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt index ae2238f..1196920 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt @@ -124,16 +124,33 @@ fun render( setViewVisibility(R.id.state_ip_address_loader, if (loading) View.VISIBLE else View.GONE) - val graphHeightPx = 26.dpToPxF(context) - val maxValue = state.dayStatistics.maxOrNull().let { if (it == null || it == 0) 1 else it } - val ratio = graphHeightPx / maxValue - - state.dayStatistics.zip(barIds).forEach { (value, viewId) -> - val topPadding = graphHeightPx - value * ratio - setViewPadding(viewId, 0, topPadding.toInt(), 0, 0) + if (state.dayStatistics.all { it == 0 }) { + setViewVisibility(R.id.graph, View.GONE) + setViewVisibility(R.id.graph_legend, View.GONE) + setViewVisibility(R.id.graph_empty, View.VISIBLE) + } else { + setViewVisibility(R.id.graph, View.VISIBLE) + setViewVisibility(R.id.graph_legend, View.VISIBLE) + setViewVisibility(R.id.graph_empty, View.GONE) + + val graphHeightPx = 26.dpToPxF(context) + val maxValue = + state.dayStatistics.maxOrNull().let { if (it == null || it == 0) 1 else it } + val ratio = graphHeightPx / maxValue + + state.dayStatistics.zip(barIds).forEach { (value, viewId) -> + val topPadding = graphHeightPx - value * ratio + setViewPadding(viewId, 0, topPadding.toInt(), 0, 0) + } + + setTextViewText( + R.id.graph_legend, + context.getString( + R.string.widget_graph_trackers_legend, + state.activeTrackersCount.toString() + ) + ) } - - setTextViewText(R.id.graph_legend, context.getString(R.string.widget_graph_trackers_legend, state.activeTrackersCount.toString())) } appWidgetManager.updateAppWidget(ComponentName(context, Widget::class.java), views) -- cgit v1.2.1