aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/privacycentralapp/common
diff options
context:
space:
mode:
authorRomain Hunault <romain.hunault@e.email>2022-04-05 18:23:04 +0000
committerRomain Hunault <romain.hunault@e.email>2022-04-05 18:23:04 +0000
commit752ee5975d0d1b75ef773b4d7e20ad00fac96519 (patch)
treed3abbbad472ed6a889bc3c0fa334329c01d35b4b /app/src/main/java/foundation/e/privacycentralapp/common
parent250da848583f1fbd2d6658339fc758d22c67e938 (diff)
parent1116394343fe8cb489f5405ab3c61b5e1ce78a50 (diff)
downloadadvanced-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.kt67
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/common/NavToolbarFragment.kt1
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) {