diff options
| author | Romain Hunault <romain.hunault@e.email> | 2022-04-05 18:23:04 +0000 |
|---|---|---|
| committer | Romain Hunault <romain.hunault@e.email> | 2022-04-05 18:23:04 +0000 |
| commit | 752ee5975d0d1b75ef773b4d7e20ad00fac96519 (patch) | |
| tree | d3abbbad472ed6a889bc3c0fa334329c01d35b4b /app/src/main/java/foundation/e/privacycentralapp/common | |
| parent | 250da848583f1fbd2d6658339fc758d22c67e938 (diff) | |
| parent | 1116394343fe8cb489f5405ab3c61b5e1ce78a50 (diff) | |
| download | advanced-privacy-752ee5975d0d1b75ef773b4d7e20ad00fac96519.tar.gz | |
Merge branch '5217_blocked_trackers' into 'main'
5217 - Display blocked trackers, 5216 : add leaks in tooltips
See merge request e/privacy-central/privacycentralapp!39
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/common')
| -rw-r--r-- | app/src/main/java/foundation/e/privacycentralapp/common/GraphHolder.kt | 67 | ||||
| -rw-r--r-- | app/src/main/java/foundation/e/privacycentralapp/common/NavToolbarFragment.kt | 1 |
2 files changed, 55 insertions, 13 deletions
diff --git a/app/src/main/java/foundation/e/privacycentralapp/common/GraphHolder.kt b/app/src/main/java/foundation/e/privacycentralapp/common/GraphHolder.kt index 929d838..aba3a95 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/common/GraphHolder.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/common/GraphHolder.kt @@ -19,9 +19,14 @@ package foundation.e.privacycentralapp.common import android.content.Context import android.graphics.Canvas +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.style.DynamicDrawableSpan +import android.text.style.ImageSpan import android.view.View import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.text.toSpannable import androidx.core.view.isVisible import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.components.MarkerView @@ -37,7 +42,7 @@ import foundation.e.privacycentralapp.R import foundation.e.privacycentralapp.extensions.dpToPxF class GraphHolder(val barChart: BarChart, val context: Context, val isMarkerAbove: Boolean = true) { - var data = emptyList<Int>() + var data = emptyList<Pair<Int, Int>>() set(value) { field = value refreshDataSet() @@ -80,7 +85,17 @@ class GraphHolder(val barChart: BarChart, val context: Context, val isMarkerAbov setOnChartValueSelectedListener(object : OnChartValueSelectedListener { override fun onValueSelected(e: Entry?, h: Highlight?) { - h?.let { periodMarker.setLabel(labels.getOrNull(it.x.toInt())) } + h?.let { + val index = it.x.toInt() + if (index > 0 && + index < labels.size && + index < this@GraphHolder.data.size + ) { + val period = labels[index] + val (blocked, leaked) = this@GraphHolder.data[index] + periodMarker.setLabel(period, blocked, leaked) + } + } isHighlighted = true refreshDataSet() } @@ -95,18 +110,31 @@ class GraphHolder(val barChart: BarChart, val context: Context, val isMarkerAbov private fun refreshDataSet() { val trackersDataSet = BarDataSet( - data.mapIndexed { index, value -> BarEntry(index.toFloat(), value.toFloat()) }, + data.mapIndexed { index, value -> + BarEntry( + index.toFloat(), + floatArrayOf(value.first.toFloat(), value.second.toFloat()) + ) + }, "" ).apply { - color = ContextCompat.getColor( - context, - if (isHighlighted) R.color.blue_unselected else R.color.accent + + val blockedColor = ContextCompat.getColor(context, R.color.accent) + val leakedColor = ContextCompat.getColor(context, R.color.red_off) + + // ColorUtils.setAlphaComponent() + colors = listOf( + blockedColor, + // if (isHighlighted) R.color.blue_unselected else R.color.accent + leakedColor ) + setDrawValues(false) - highLightColor = ContextCompat.getColor( - context, R.color.accent - ) - highLightAlpha = 255 + + // highLightColor = ContextCompat.getColor( + // context, R.color.accent + // ) + // highLightAlpha = 255 } barChart.data = BarData(trackersDataSet) @@ -162,8 +190,23 @@ class PeriodMarkerView(context: Context, private val isMarkerAbove: Boolean = tr } } - fun setLabel(label: String?) { - findViewById<TextView>(R.id.label).text = label + fun setLabel(period: String, blocked: Int, leaked: Int) { + val span = SpannableStringBuilder(period) + span.append(": $blocked ") + span.setSpan( + ImageSpan(context, R.drawable.ic_legend_blocked, DynamicDrawableSpan.ALIGN_BASELINE), + span.length - 1, + span.length, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ) + span.append(" $leaked ") + span.setSpan( + ImageSpan(context, R.drawable.ic_legend_leaked, DynamicDrawableSpan.ALIGN_BASELINE), + span.length - 1, + span.length, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ) + findViewById<TextView>(R.id.label).text = span.toSpannable() } override fun refreshContent(e: Entry?, highlight: Highlight?) { diff --git a/app/src/main/java/foundation/e/privacycentralapp/common/NavToolbarFragment.kt b/app/src/main/java/foundation/e/privacycentralapp/common/NavToolbarFragment.kt index c28c871..6955405 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/common/NavToolbarFragment.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/common/NavToolbarFragment.kt @@ -19,7 +19,6 @@ package foundation.e.privacycentralapp.common import androidx.annotation.LayoutRes import com.google.android.material.appbar.MaterialToolbar -import foundation.e.privacycentralapp.R abstract class NavToolbarFragment(@LayoutRes contentLayoutId: Int) : ToolbarFragment(contentLayoutId) { |
