diff options
author | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2022-11-18 07:21:49 +0000 |
---|---|---|
committer | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2022-11-18 07:21:49 +0000 |
commit | 2ee502ad3dbfd42c09a88212f5bd179fc531e2e6 (patch) | |
tree | 1b81bc5228aa8c722ca8df289cd9f93c2104522f /app/src/main/java/foundation/e/privacycentralapp/widget | |
parent | 82e1bee1454fe5f8bc6653344da76b35f1d3d8a3 (diff) | |
download | advanced-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')
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) { |