aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/privacycentralapp/widget
diff options
context:
space:
mode:
authorGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2022-11-18 07:21:49 +0000
committerGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2022-11-18 07:21:49 +0000
commit2ee502ad3dbfd42c09a88212f5bd179fc531e2e6 (patch)
tree1b81bc5228aa8c722ca8df289cd9f93c2104522f /app/src/main/java/foundation/e/privacycentralapp/widget
parent82e1bee1454fe5f8bc6653344da76b35f1d3d8a3 (diff)
downloadadvanced-privacy-2ee502ad3dbfd42c09a88212f5bd179fc531e2e6.tar.gz
568: individuals buttons to activate trackers control, fake location and Hide my ip
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/widget')
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt6
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt13
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt65
3 files changed, 66 insertions, 18 deletions
diff --git a/app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt b/app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt
index ddfcc2e..3abe21b 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt
@@ -85,14 +85,14 @@ class Widget : AppWidgetProvider() {
getPrivacyStateUseCase.quickPrivacyState,
getPrivacyStateUseCase.trackerMode,
getPrivacyStateUseCase.isLocationHidden,
- getPrivacyStateUseCase.isIpHidden,
- ) { quickPrivacyState, trackerMode, isLocationHidden, isIpHidden ->
+ getPrivacyStateUseCase.ipScramblingMode,
+ ) { quickPrivacyState, trackerMode, isLocationHidden, ipScramblingMode ->
State(
quickPrivacyState = quickPrivacyState,
trackerMode = trackerMode,
isLocationHidden = isLocationHidden,
- isIpHidden = isIpHidden
+ ipScramblingMode = ipScramblingMode
)
}.sample(50)
.combine(
diff --git a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt
index 831c06f..4a103e0 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt
@@ -26,10 +26,13 @@ import foundation.e.privacycentralapp.R
class WidgetCommandReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
- val privacyCentralApplication = (context?.applicationContext as? PrivacyCentralApplication)
+ val getQuickPrivacyStateUseCase = (context?.applicationContext as? PrivacyCentralApplication)?.dependencyContainer?.getQuickPrivacyStateUseCase
+
when (intent?.action) {
- ACTION_TOGGLE_PRIVACY -> {
- if (privacyCentralApplication?.dependencyContainer?.getQuickPrivacyStateUseCase?.toggleReturnIsFirstActivation() == true) {
+ ACTION_TOGGLE_TRACKERS -> getQuickPrivacyStateUseCase?.toggleTrackers()
+ ACTION_TOGGLE_LOCATION -> getQuickPrivacyStateUseCase?.toggleLocation()
+ ACTION_TOGGLE_IPSCRAMBLING -> {
+ if (getQuickPrivacyStateUseCase?.toggleIpScramblingIsFirstActivation() == true) {
Toast.makeText(
context,
context.getString(R.string.dashboard_first_ipscrambling_activation),
@@ -42,6 +45,8 @@ class WidgetCommandReceiver : BroadcastReceiver() {
}
companion object {
- const val ACTION_TOGGLE_PRIVACY = "toggle_privacy"
+ const val ACTION_TOGGLE_TRACKERS = "toggle_trackers"
+ const val ACTION_TOGGLE_LOCATION = "toggle_location"
+ const val ACTION_TOGGLE_IPSCRAMBLING = "toggle_ipscrambling"
}
}
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 682e5cc..4fdbb03 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt
@@ -30,16 +30,19 @@ import foundation.e.privacycentralapp.R
import foundation.e.privacycentralapp.Widget
import foundation.e.privacycentralapp.Widget.Companion.isDarkText
import foundation.e.privacycentralapp.common.extensions.dpToPxF
+import foundation.e.privacycentralapp.domain.entities.InternetPrivacyMode
import foundation.e.privacycentralapp.domain.entities.QuickPrivacyState
import foundation.e.privacycentralapp.domain.entities.TrackerMode
import foundation.e.privacycentralapp.main.MainActivity
-import foundation.e.privacycentralapp.widget.WidgetCommandReceiver.Companion.ACTION_TOGGLE_PRIVACY
+import foundation.e.privacycentralapp.widget.WidgetCommandReceiver.Companion.ACTION_TOGGLE_IPSCRAMBLING
+import foundation.e.privacycentralapp.widget.WidgetCommandReceiver.Companion.ACTION_TOGGLE_LOCATION
+import foundation.e.privacycentralapp.widget.WidgetCommandReceiver.Companion.ACTION_TOGGLE_TRACKERS
data class State(
val quickPrivacyState: QuickPrivacyState = QuickPrivacyState.DISABLED,
val trackerMode: TrackerMode = TrackerMode.VULNERABLE,
val isLocationHidden: Boolean = false,
- val isIpHidden: Boolean? = false,
+ val ipScramblingMode: InternetPrivacyMode = InternetPrivacyMode.REAL_IP_LOADING,
val dayStatistics: List<Pair<Int, Int>> = emptyList(),
val activeTrackersCount: Int = 0,
)
@@ -71,19 +74,21 @@ fun render(
}
)
)
+
setImageViewResource(
- R.id.toggle_privacy_central,
- if (state.quickPrivacyState.isEnabled()) R.drawable.ic_switch_enabled
- else R.drawable.ic_switch_disabled
+ R.id.toggle_trackers,
+ if (state.trackerMode == TrackerMode.VULNERABLE)
+ R.drawable.ic_switch_disabled
+ else R.drawable.ic_switch_enabled
)
setOnClickPendingIntent(
- R.id.toggle_privacy_central,
+ R.id.toggle_trackers,
PendingIntent.getBroadcast(
context,
- REQUEST_CODE_TOGGLE,
+ REQUEST_CODE_TOGGLE_TRACKERS,
Intent(context, WidgetCommandReceiver::class.java).apply {
- action = ACTION_TOGGLE_PRIVACY
+ action = ACTION_TOGGLE_TRACKERS
},
FLAG_IMMUTABLE or FLAG_UPDATE_CURRENT
)
@@ -100,6 +105,24 @@ fun render(
)
)
+ setImageViewResource(
+ R.id.toggle_location,
+ if (state.isLocationHidden) R.drawable.ic_switch_enabled
+ else R.drawable.ic_switch_disabled
+ )
+
+ setOnClickPendingIntent(
+ R.id.toggle_location,
+ PendingIntent.getBroadcast(
+ context,
+ REQUEST_CODE_TOGGLE_LOCATION,
+ Intent(context, WidgetCommandReceiver::class.java).apply {
+ action = ACTION_TOGGLE_LOCATION
+ },
+ FLAG_IMMUTABLE or FLAG_UPDATE_CURRENT
+ )
+ )
+
setTextViewText(
R.id.state_geolocation,
context.getString(
@@ -108,15 +131,33 @@ fun render(
)
)
+ setImageViewResource(
+ R.id.toggle_ipscrambling,
+ if (state.ipScramblingMode.isChecked) R.drawable.ic_switch_enabled
+ else R.drawable.ic_switch_disabled
+ )
+
+ setOnClickPendingIntent(
+ R.id.toggle_ipscrambling,
+ PendingIntent.getBroadcast(
+ context,
+ REQUEST_CODE_TOGGLE_IPSCRAMBLING,
+ Intent(context, WidgetCommandReceiver::class.java).apply {
+ action = ACTION_TOGGLE_IPSCRAMBLING
+ },
+ FLAG_IMMUTABLE or FLAG_UPDATE_CURRENT
+ )
+ )
+
setTextViewText(
R.id.state_ip_address,
context.getString(
- if (state.isIpHidden == true) R.string.widget_state_ipaddress_on
+ if (state.ipScramblingMode == InternetPrivacyMode.HIDE_IP) R.string.widget_state_ipaddress_on
else R.string.widget_state_ipaddress_off
)
)
- val loading = state.isIpHidden == null
+ val loading = state.ipScramblingMode.isLoading
setViewVisibility(R.id.state_ip_address, if (loading) View.GONE else View.VISIBLE)
@@ -265,8 +306,10 @@ private val leakedBarIds = listOf(
)
private const val REQUEST_CODE_DASHBOARD = 1
-private const val REQUEST_CODE_TOGGLE = 2
private const val REQUEST_CODE_TRACKERS = 3
+private const val REQUEST_CODE_TOGGLE_TRACKERS = 4
+private const val REQUEST_CODE_TOGGLE_LOCATION = 5
+private const val REQUEST_CODE_TOGGLE_IPSCRAMBLING = 6
private const val REQUEST_CODE_HIGHLIGHT = 100
fun applyDarkText(context: Context, state: State, views: RemoteViews) {