summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/src/main/AndroidManifest.xml7
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt12
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/common/WarningDialog.kt130
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt17
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/entities/MainFeatures.kt22
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/ShowFeaturesWarningUseCase.kt54
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt1
-rw-r--r--app/src/main/res/layout/alertdialog_do_not_show_again.xml32
-rw-r--r--app/src/main/res/values-de/strings.xml33
-rw-r--r--app/src/main/res/values-es/strings.xml33
-rw-r--r--app/src/main/res/values-fi/strings.xml33
-rw-r--r--app/src/main/res/values-fr/strings.xml33
-rw-r--r--app/src/main/res/values-it/strings.xml33
-rw-r--r--app/src/main/res/values/strings.xml48
-rw-r--r--app/src/main/res/values/themes.xml11
15 files changed, 299 insertions, 200 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b5836dc..3bcd764 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -86,6 +86,13 @@
<category android:name="${mainActivityIntentFilterCategory}"/>
</intent-filter>
</activity>
+ <activity
+ android:name=".common.WarningDialog"
+ android:noHistory="true"
+ android:excludeFromRecents="true"
+ android:launchMode="singleInstance"
+ android:theme="@style/Theme.InvisibleActivity"
+ />
</application>
</manifest> \ No newline at end of file
diff --git a/app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt b/app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt
index 345307c..f241e67 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt
@@ -24,6 +24,7 @@ import androidx.lifecycle.DEFAULT_ARGS_KEY
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.CreationExtras
+import foundation.e.privacycentralapp.common.WarningDialog
import foundation.e.privacycentralapp.data.repositories.AppListsRepository
import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
import foundation.e.privacycentralapp.data.repositories.TrackersRepository
@@ -31,6 +32,7 @@ import foundation.e.privacycentralapp.domain.usecases.AppListUseCase
import foundation.e.privacycentralapp.domain.usecases.FakeLocationStateUseCase
import foundation.e.privacycentralapp.domain.usecases.GetQuickPrivacyStateUseCase
import foundation.e.privacycentralapp.domain.usecases.IpScramblingStateUseCase
+import foundation.e.privacycentralapp.domain.usecases.ShowFeaturesWarningUseCase
import foundation.e.privacycentralapp.domain.usecases.TrackersStateUseCase
import foundation.e.privacycentralapp.domain.usecases.TrackersStatisticsUseCase
import foundation.e.privacycentralapp.dummy.CityDataSource
@@ -106,6 +108,10 @@ class DependencyContainer(val app: Application) {
)
}
+ val showFeaturesWarningUseCase by lazy {
+ ShowFeaturesWarningUseCase(localStateRepository = localStateRepository)
+ }
+
val viewModelsFactory by lazy {
ViewModelsFactory(
getQuickPrivacyStateUseCase = getQuickPrivacyStateUseCase,
@@ -126,6 +132,12 @@ class DependencyContainer(val app: Application) {
UpdateTrackersWorker.periodicUpdate(context)
+ WarningDialog.startListening(
+ showFeaturesWarningUseCase,
+ GlobalScope,
+ context
+ )
+
Widget.startListening(
context,
getQuickPrivacyStateUseCase,
diff --git a/app/src/main/java/foundation/e/privacycentralapp/common/WarningDialog.kt b/app/src/main/java/foundation/e/privacycentralapp/common/WarningDialog.kt
new file mode 100644
index 0000000..cbbeffa
--- /dev/null
+++ b/app/src/main/java/foundation/e/privacycentralapp/common/WarningDialog.kt
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2022 E FOUNDATION
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package foundation.e.privacycentralapp.common
+
+import android.app.Activity
+import android.content.Context
+import android.content.Intent
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import android.widget.CheckBox
+import androidx.appcompat.app.AlertDialog
+import foundation.e.privacycentralapp.PrivacyCentralApplication
+import foundation.e.privacycentralapp.R
+import foundation.e.privacycentralapp.domain.entities.MainFeatures
+import foundation.e.privacycentralapp.domain.entities.MainFeatures.FAKE_LOCATION
+import foundation.e.privacycentralapp.domain.entities.MainFeatures.IP_SCRAMBLING
+import foundation.e.privacycentralapp.domain.entities.MainFeatures.TRACKERS_CONTROL
+import foundation.e.privacycentralapp.domain.usecases.ShowFeaturesWarningUseCase
+import foundation.e.privacycentralapp.main.MainActivity
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.map
+
+class WarningDialog : Activity() {
+ companion object {
+ private const val PARAM_FEATURE = "feature"
+
+ fun startListening(
+ showFeaturesWarningUseCase: ShowFeaturesWarningUseCase,
+ appScope: CoroutineScope,
+ appContext: Context
+ ) {
+ showFeaturesWarningUseCase.showWarning().map { feature ->
+ appContext.startActivity(
+ createIntent(context = appContext, feature = feature)
+ )
+ }.launchIn(appScope)
+ }
+
+ private fun createIntent(
+ context: Context,
+ feature: MainFeatures,
+ ): Intent {
+ val intent = Intent(context, WarningDialog::class.java)
+ intent.putExtra(PARAM_FEATURE, feature.name)
+ intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
+ return intent
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ getWindow().setBackgroundDrawable(ColorDrawable(0))
+
+ val feature = try {
+ MainFeatures.valueOf(intent.getStringExtra(PARAM_FEATURE) ?: "")
+ } catch (e: Exception) {
+ Log.e("WarningDialog", "Missing mandatory activity parameter", e)
+ finish()
+ return
+ }
+
+ showWarningDialog(feature)
+ }
+
+ private fun showWarningDialog(feature: MainFeatures) {
+ val builder = AlertDialog.Builder(this)
+ builder.setOnDismissListener { finish() }
+
+ val content: View = layoutInflater.inflate(R.layout.alertdialog_do_not_show_again, null)
+ val checkbox = content.findViewById<CheckBox>(R.id.checkbox)
+ builder.setView(content)
+
+ builder.setMessage(
+ when (feature) {
+ TRACKERS_CONTROL -> R.string.warningdialog_trackers_message
+ FAKE_LOCATION -> R.string.warningdialog_location_message
+ IP_SCRAMBLING -> R.string.warningdialog_ipscrambling_message
+ }
+ )
+
+ builder.setTitle(
+ when (feature) {
+ TRACKERS_CONTROL -> R.string.warningdialog_trackers_title
+ FAKE_LOCATION -> R.string.warningdialog_location_title
+ IP_SCRAMBLING -> R.string.warningdialog_ipscrambling_title
+ }
+ )
+
+ builder.setPositiveButton(
+ when (feature) {
+ IP_SCRAMBLING -> R.string.warningdialog_ipscrambling_cta
+ else -> R.string.ok
+ }
+ ) { _, _ ->
+ if (checkbox.isChecked()) {
+ (application as PrivacyCentralApplication)
+ .dependencyContainer.showFeaturesWarningUseCase
+ .doNotShowAgain(feature)
+ }
+ finish()
+ }
+
+ if (feature == TRACKERS_CONTROL) {
+ builder.setNeutralButton(R.string.warningdialog_trackers_secondary_cta) { _, _ ->
+ startActivity(MainActivity.createTrackersIntent(this))
+ finish()
+ }
+ }
+
+ builder.show()
+ }
+}
diff --git a/app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt b/app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt
index 92ee0c1..6cb4f81 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt
@@ -36,6 +36,9 @@ class LocalStateRepository(context: Context) {
private const val KEY_FAKE_LATITUDE = "fakeLatitude"
private const val KEY_FAKE_LONGITUDE = "fakeLongitude"
private const val KEY_FIRST_BOOT = "firstBoot"
+ private const val KEY_HIDE_WARNING_TRACKERS = "hide_warning_trackers"
+ private const val KEY_HIDE_WARNING_LOCATION = "hide_warning_location"
+ private const val KEY_HIDE_WARNING_IPSCRAMBLING = "hide_warning_ipscrambling"
}
private val sharedPref = context.getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE)
@@ -50,7 +53,7 @@ class LocalStateRepository(context: Context) {
val areAllTrackersBlocked: MutableStateFlow<Boolean> = MutableStateFlow(false)
- private val _fakeLocationEnabled = MutableStateFlow(sharedPref.getBoolean(KEY_FAKE_LOCATION, true))
+ private val _fakeLocationEnabled = MutableStateFlow(sharedPref.getBoolean(KEY_FAKE_LOCATION, false))
val fakeLocationEnabled = _fakeLocationEnabled.asStateFlow()
@@ -99,6 +102,18 @@ class LocalStateRepository(context: Context) {
get() = sharedPref.getBoolean(KEY_FIRST_BOOT, true)
set(value) = set(KEY_FIRST_BOOT, value)
+ var hideWarningTrackers: Boolean
+ get() = sharedPref.getBoolean(KEY_HIDE_WARNING_TRACKERS, false)
+ set(value) = set(KEY_HIDE_WARNING_TRACKERS, value)
+
+ var hideWarningLocation: Boolean
+ get() = sharedPref.getBoolean(KEY_HIDE_WARNING_LOCATION, false)
+ set(value) = set(KEY_HIDE_WARNING_LOCATION, value)
+
+ var hideWarningIpScrambling: Boolean
+ get() = sharedPref.getBoolean(KEY_HIDE_WARNING_IPSCRAMBLING, false)
+ set(value) = set(KEY_HIDE_WARNING_IPSCRAMBLING, value)
+
private fun set(key: String, value: Boolean) {
sharedPref.edit().putBoolean(key, value).apply()
}
diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/entities/MainFeatures.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/entities/MainFeatures.kt
new file mode 100644
index 0000000..0e7f99c
--- /dev/null
+++ b/app/src/main/java/foundation/e/privacycentralapp/domain/entities/MainFeatures.kt
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2022 E FOUNDATION
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package foundation.e.privacycentralapp.domain.entities
+
+enum class MainFeatures {
+ TRACKERS_CONTROL, FAKE_LOCATION, IP_SCRAMBLING
+}
diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/ShowFeaturesWarningUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/ShowFeaturesWarningUseCase.kt
new file mode 100644
index 0000000..e347b34
--- /dev/null
+++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/ShowFeaturesWarningUseCase.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2022 E FOUNDATION
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package foundation.e.privacycentralapp.domain.usecases
+
+import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
+import foundation.e.privacycentralapp.domain.entities.MainFeatures
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.drop
+import kotlinx.coroutines.flow.dropWhile
+import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.merge
+
+class ShowFeaturesWarningUseCase(
+ private val localStateRepository: LocalStateRepository
+) {
+
+ fun showWarning(): Flow<MainFeatures> {
+ return merge(
+ localStateRepository.blockTrackers.drop(1).dropWhile { !it }
+ .filter { it && !localStateRepository.hideWarningTrackers }
+ .map { MainFeatures.TRACKERS_CONTROL },
+ localStateRepository.fakeLocationEnabled.drop(1).dropWhile { !it }
+ .filter { it && !localStateRepository.hideWarningLocation }
+ .map { MainFeatures.FAKE_LOCATION },
+ localStateRepository.ipScramblingSetting.drop(1).dropWhile { !it }
+ .filter { it && !localStateRepository.hideWarningIpScrambling }
+ .map { MainFeatures.IP_SCRAMBLING }
+ )
+ }
+
+ fun doNotShowAgain(feature: MainFeatures) {
+ when (feature) {
+ MainFeatures.TRACKERS_CONTROL -> localStateRepository.hideWarningTrackers = true
+ MainFeatures.FAKE_LOCATION -> localStateRepository.hideWarningLocation = true
+ MainFeatures.IP_SCRAMBLING -> localStateRepository.hideWarningIpScrambling = true
+ }
+ }
+}
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 4fdbb03..fccfd48 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt
@@ -184,7 +184,6 @@ fun render(
)
setOnClickPendingIntent(R.id.graph_view_trackers_btn, pIntent)
- // setOnClickPendingIntent(R.id.graph_view_trackers_btn_icon, pIntent)
val graphHeightPx = 26.dpToPxF(context)
val maxValue =
diff --git a/app/src/main/res/layout/alertdialog_do_not_show_again.xml b/app/src/main/res/layout/alertdialog_do_not_show_again.xml
new file mode 100644
index 0000000..1b60843
--- /dev/null
+++ b/app/src/main/res/layout/alertdialog_do_not_show_again.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2022 E FOUNDATION
+ ~
+ ~ This program is free software: you can redistribute it and/or modify
+ ~ it under the terms of the GNU General Public License as published by
+ ~ the Free Software Foundation, either version 3 of the License, or
+ ~ (at your option) any later version.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ along with this program. If not, see <https://www.gnu.org/licenses/>.
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingHorizontal="16dp"
+ android:paddingTop="24dp"
+ android:paddingBottom="8dp"
+ >
+ <CheckBox
+ android:id="@+id/checkbox"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+
+ android:text="@string/warningdialog_do_not_show_again"
+ />
+</LinearLayout> \ No newline at end of file
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 67fc7bb..75e3ce4 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -46,33 +46,6 @@
\n„Mein Standort verwalten“ ermöglicht dir, einen gefälschten Standort anstatt deines echten Aufenthaltsortes zu benutzen. Auf diese Weise wird dein echter Standort nicht mit Apps geteilt, die zu sehr herumspionieren.</string>
<string name="ipscrambling_any_location">Zufälliges Land</string>
<string name="ipscrambling_select_app">Wende diese Einstellungen auf alle ausgewählten Anwendungen an * :</string>
- <string name="user_location_permission_not_granted">Du hast keine Standort-Berechtigung erteilt</string>
- <string name="please_enter_valid_lat_long">Bitte gib einen gültigen Längen- und Breitengrad an</string>
- <string name="quick_protection">Schneller Datenschutz</string>
- <string name="privacy_dashboard">Datenschutz-Überblick</string>
- <string name="click_to_learn_more">Tippe für mehr Information</string>
- <string name="apps_permissions">App-Berechtigungen</string>
- <string name="trackers">Tracker</string>
- <string name="following_trackers_in_use">Folgende Tracker sind in Benutzung</string>
- <string name="enable_disable_tracker_info">Aktiviere oder deaktiviere diesen Tracker in den folgenden Apps</string>
- <string name="tracker">Tracker</string>
- <string name="i_am_exposing">Ich lasse meine echte IP-Adresse ungeschützt</string>
- <string name="ipscrambling_all_apps_scrambled">Alle Apps benutzen eine verschleierte IP</string>
- <string name="ipscrambling_only_selected_apps_scrambled">Nur die folgenden Apps benutzen eine verschleierte IP</string>
- <string name="ipscrambling_is_starting">Tor startet gerade …</string>
- <string name="ipscrambling_is_stopping">Tor wird angehalten …</string>
-
- ipscrambling_any_location
- <string name="permission_control_info">Verwalte und kontrolliere die verschiedenen Berechtigungen der Apps.</string>
- <string name="apps_allowed">%1$d von %2$d App erlaubt</string>
- <string name="apps_access_to_permission">Apps, die Zugriff auf %1$s Berechtigung haben</string>
- <string name="real_location_mode">Echter Standort-Modus</string>
- <string name="random_location_mode">Zufälliger Standort-Modus</string>
- <string name="fake_location_mode">Gefälschter Standort-Modus</string>
- <string name="user_location_permission_explanation">Diese App benötigt Standort-Berechtigungen, um zu funktionieren.</string>
- <string name="appwidget_text">BEISPIEL</string>
- <string name="add_widget">Widget hinzufügen</string>
- <string name="add_location">Standort hinzufügen</string>
<string name="dummy_system_app_label">System</string>
<string name="trackers_info">Tracker (Verfolger) sind kleine Programme, die in Anwendungen eingebaut werden. Sie sammeln deine Daten und verfolgen andauernd deine Aktivität. Du kannst sehen, wie viele Tracker aktiv sind, und kannst sie alle für den bestmöglichen Schutz blockieren. Das kann aber auch manche Apps am korrekten Funktionieren hindern, darum kannst du selbst auswählen, welche Tracker du blockieren möchtest.</string>
<string name="trackers_count_label">%d Tracker</string>
@@ -91,13 +64,7 @@
<string name="apptrackers_error_quickprivacy_disabled">Aktiviere „Schneller Datenschutz“, um Tracker aktivieren und deaktivieren zu können.</string>
<string name="apptrackers_trackers_count_summary">%2$d Tracker entdeckt, davon sind %1$d blockiert, %3$d blockierte Lecks und %4$d erlaubte Lecks.</string>
<string name="apptrackers_error_no_app">App ist nicht installiert.</string>
- <string name="app_widget_description">Das ist eine App-Widget-Beschreibung</string>
<string name="widget_state_title_on">Dein Online-Datenschutz ist gewährleistet</string>
- <string name="quick_protection_info">Der „Schnelle Datenschutz“ aktiviert diese Einstellungen, wenn er angeschaltet wird</string>
- <string name="quick_protection_settings_list">- Alle Tracker sind ausgeschaltet.
-\n- Dein Standort wird verschleiert.
-\n- Deine echte IP-Adresse wird versteckt.</string>
- <string name="learn_more">Erfahre mehr darüber</string>
<string name="widget_state_title_off">Dein Online-Datenschutz ist nicht gewährleistet</string>
<string name="ipscrambling_location_label">Meine Internetaktivität soll erscheinen von:</string>
<string name="ipscrambling_info">Deine Internetadresse oder IP-Adresse ist die Kennung deines Telefons, wenn es mit dem Internet verbunden ist.
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 213a9d7..e7a4509 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -30,21 +30,6 @@
<string name="dashboard_state_title_off">Tu privacidad en linea está desprotegida</string>
<string name="dashboard_apps_permissions_subtitle">Gestiona tus permisos</string>
<string name="apptrackers_error_quickprivacy_disabled">Habilitar la \"Privacidad rápida\" para poder activar/desactivar los rastreadores.</string>
- <string name="quick_protection_info">La \"Protección rápida\" habilita estos ajustes cuando está activada</string>
- <string name="learn_more">Más información</string>
- <string name="add_location">Añadir ubicación</string>
- <string name="i_am_exposing">Estoy exponiendo mi dirección IP real</string>
- <string name="ipscrambling_all_apps_scrambled">Todas las aplicaciones utilizan la IP oculta</string>
- <string name="ipscrambling_only_selected_apps_scrambled">Solo las siguientes aplicaciones utilizan la IP oculta</string>
- <string name="ipscrambling_is_starting">Tor está iniciando...</string>
- <string name="ipscrambling_is_stopping">Tor está parando...</string>
-
- ipscrambling_any_location
- <string name="apps_allowed">%1$d de %2$d aplicaciones permitidas</string>
- <string name="real_location_mode">Modo de ubicación real</string>
- <string name="random_location_mode">Modo de ubicación aleatoria</string>
- <string name="fake_location_mode">Modo de ubicación falsa</string>
- <string name="permission_control_info">Gestionar y controlar las aplicaciones que solicitan varios permisos.</string>
<string name="location_title">Gestionar mi ubicación</string>
<string name="location_use_real_location">Usar mi ubicación real</string>
<string name="location_use_random_location">Usar una ubicación aceptable al azar</string>
@@ -64,21 +49,8 @@
<string name="apptrackers_no_trackers_yet_block_off">Todavía no se ha detectado ningún rastreador. Si se detectan nuevos rastreadores se actualizarán aquí.</string>
<string name="ipscrambling_error_quickprivacy_disabled">Habilitada la \"Privacidad rápida\" para utilizar las funcionalidades</string>
<string name="apptrackers_trackers_list_title">Selecciona los rastreadores que deseas activar/desactivar.</string>
- <string name="quick_protection">Protección rápida</string>
- <string name="privacy_dashboard">Panel de control de privacidad</string>
- <string name="apps_permissions">Permiso de aplicaciones</string>
- <string name="trackers">Rastreadores</string>
- <string name="following_trackers_in_use">Se utilizan los siguientes rastreadores</string>
- <string name="tracker">Rastreador</string>
- <string name="please_enter_valid_lat_long">Por favor, introduce un valor válido de longitud y latitud</string>
<string name="trackers_count_label">%d rastreadores</string>
<string name="apptrackers_no_trackers_yet_block_on">Todavía no se ha detectado ningún rastreador. Todos los rastreadores futuros serán bloqueados.</string>
- <string name="quick_protection_settings_list">- Todos los rastreadores están desactivados.
-\n- Tu geolocalización será falseada.
-\n- Tu dirección IP real estará oculta.</string>
- <string name="apps_access_to_permission">Aplicaciones que tienen acceso al permiso %1$s</string>
- <string name="user_location_permission_explanation">Esta aplicación necesita permisos de ubicación para poder mostrar su funcionalidad.</string>
- <string name="enable_disable_tracker_info">Activar o desactivar este rastreador para las siguientes aplicaciones</string>
<string name="dashboard_state_title_on">Su privacidad en línea está protegida</string>
<string name="dashboard_graph_trackers_legend">%s rastreadores te han perfilado en las últimas 24 horas</string>
<string name="dashboard_location_title">Gestionar mi ubicación</string>
@@ -90,17 +62,12 @@
<string name="location_info">Tu ubicación puede revelar mucho sobre ti o tus actividades.
\n
\n\"Gestionar mi ubicación\" te permite utilizar una ubicación falsa en lugar de tu posición real. De este modo, tu ubicación real no se comparte con aplicaciones que podrían husmear demasiado.</string>
- <string name="user_location_permission_not_granted">No has concedido el permiso de ubicación</string>
- <string name="click_to_learn_more">Haz clic para saber más</string>
<string name="trackers_info">Los rastreadores son partes de código ocultas dentro de las aplicaciones. Recogen tus datos y siguen tu actividad las 24 horas del día: parece que tu teléfono te escucha.
\n
\nPuedes ver cuantos rastreadores están activos, y puedes bloquear todos los rastreadores para obtener una mejor protección. Como podría causar el mal funcionamiento de algunas aplicaciones, también puedes ajustar la configuración y elegir específicamente qué rastreadores quieres bloquear.</string>
<string name="ipscrambling_tor_disclaimer"><b>Nota:</b> Mientras esta opción esté activa, es probable que tu velocidad de Internet se reduzca considerablemente.</string>
<string name="dummy_system_app_label">Sistema</string>
- <string name="appwidget_text">Ejemplo</string>
- <string name="add_widget">Añadir widget</string>
<string name="widget_state_title_on">Su privacidad en línea está protegida</string>
<string name="widget_state_title_off">Su privacidad en línea está desprotegida</string>
<string name="apptrackers_error_no_app">Aplicación no instalada.</string>
- <string name="app_widget_description">Esta es la descripción de un widget de aplicación</string>
</resources>
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index b5932de..3b9a53f 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -7,39 +7,6 @@
<string name="widget_state_title_custom">Sovelletaan mukautettuja yksityisyysasetuksia</string>
<string name="widget_state_title_off">Yksityisyyttäsi verkossa ei ole suojattu</string>
<string name="widget_state_title_on">Yksityisyytesi verkossa on suojattu</string>
- <string name="app_widget_description">Tämä on sovelluksen widgetin kuvaus</string>
- <string name="add_widget">Lisää widget</string>
- <string name="appwidget_text">ESIMERKKI</string>
- <string name="tracker">Seurain</string>
- <string name="enable_disable_tracker_info">Ota tämä seurain käyttöön tai poista se käytöstä seuraavissa sovelluksissa</string>
- <string name="following_trackers_in_use">Käytössä olevat seuraimet</string>
- <string name="trackers">Seuraimet</string>
- <string name="apps_permissions">Sovellusten käyttöoikeudet</string>
- <string name="click_to_learn_more">Napauta saadaksesi lisätietoja</string>
- <string name="privacy_dashboard">Tietosuojan hallintapaneeli</string>
- <string name="quick_protection">Quick Protection</string>
- <string name="please_enter_valid_lat_long">Syötä kelvollinen leveys- ja pituusaste</string>
- <string name="user_location_permission_not_granted">Et antanut sijaintilupaa</string>
- <string name="user_location_permission_explanation">Tämä sovellus tarvitsee sijaintiluvat, jotta se voi näyttää toimintonsa.</string>
- <string name="fake_location_mode">Väärennetyn sijainnin tila</string>
- <string name="random_location_mode">Satunnaisen sijainnin tila</string>
- <string name="real_location_mode">Todellisen sijainnin tila</string>
- <string name="apps_access_to_permission">Sovellukset, joilla on pääsy %1$s käyttöoikeuksiin</string>
- <string name="apps_allowed">%1$d / %2$d sovelluksista sallittu</string>
- <string name="permission_control_info">Hallitse ja valvo useita käyttöoikeuksia pyytäviä sovelluksia.</string>
- <string name="ipscrambling_is_stopping">Tor pysähtyy...</string>
-
- ipscrambling_any_location
- <string name="ipscrambling_is_starting">Tor käynnistyy...</string>
- <string name="ipscrambling_only_selected_apps_scrambled">Vain seuraavat sovellukset käyttävät piilotettua IP-osoitetta</string>
- <string name="ipscrambling_all_apps_scrambled">Kaikki sovellukset käyttävät piilotettua IP-osoitetta</string>
- <string name="i_am_exposing">Paljastan todellisen IP-osoitteeni</string>
- <string name="add_location">Lisää sijainti</string>
- <string name="learn_more">Lue lisää</string>
- <string name="quick_protection_settings_list">- Kaikki seuraimet on kytketty pois päältä.
-\n- Sijaintisi väärennetään.
-\n- Todellinen IP-osoitteesi piilotetaan.</string>
- <string name="quick_protection_info">Quick Protection ottaa käyttöön nämä asetukset, kun se otetaan käyttöön</string>
<string name="apptrackers_error_no_app">Sovellusta ei ole asennettu.</string>
<string name="apptrackers_trackers_count_summary">%1$d estettyä seurainta %2$d:stä havaitusta seuraimesta, %3$d estettyä tietovuotoa ja %4$d sallittua tietovuotoa.</string>
<string name="apptrackers_error_quickprivacy_disabled">Ota Quick Privacy käyttöön, jotta voit ottaa käyttöön tai poistaa käytöstä seuraimia.</string>
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index b4db80f..fdd8468 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -43,20 +43,6 @@
<string name="trackers_graph_hours_period_format">HH:mm</string>
<string name="trackers_graph_days_period_format">EEE d MMMM</string>
<string name="trackers_graph_months_period_format">MMMM yyyy</string>
- <string name="quick_protection_info">L\'activation de \"Protection rapide\" active ces paramètres</string>
- <string name="learn_more">En savoir plus</string>
- <string name="i_am_exposing">J\'expose ma véritable adresse IP</string>
- <string name="ipscrambling_all_apps_scrambled">Toutes les apps utilisent une adresse IP masquée</string>
- <string name="ipscrambling_only_selected_apps_scrambled">Seules les applications suivantes utilisent une adresse IP masquée</string>
- <string name="ipscrambling_is_starting">Tor démarre...</string>
- <string name="ipscrambling_is_stopping">Tor s\'arrête...</string>
-
- ipscrambling_any_location
- <string name="apps_allowed">%1$d applications autorisées sur %2$d</string>
- <string name="apps_access_to_permission">Apps ayant accès à %1$s autorisation·s</string>
- <string name="real_location_mode">Mode de localisation réelle</string>
- <string name="random_location_mode">Mode de localisation aléatoire</string>
- <string name="fake_location_mode">Mode de fausse localisation</string>
<string name="trackers_title">Gérer les pisteurs des applications</string>
<string name="trackers_count_label">%d pisteurs</string>
<string name="trackers_applist_title">Gérer les pisteurs utilisés dans les applications * :</string>
@@ -67,21 +53,10 @@
<string name="apptrackers_no_trackers_yet_block_on">Pour l\'instant, aucun pisteur n\'a été détecté. Tous les futurs pisteurs seront bloqués.</string>
<string name="apptrackers_error_quickprivacy_disabled">Activez \"Confidentialité Rapide\" pour pouvoir activer/désactiver les pisteurs.</string>
<string name="apptrackers_trackers_count_summary">%1$d pisteurs bloqués sur %2$d pisteurs détectés, %3$d fuites bloquées et %4$d fuites autorisées.</string>
- <string name="add_location">Ajouter une localisation</string>
<string name="location_title">Gérer ma localisation</string>
<string name="location_use_real_location">Utiliser ma localisation réelle</string>
<string name="location_use_random_location">Utiliser une localisation aléatoire plausible</string>
<string name="location_use_specific_location">Utiliser une localisation spécifique</string>
- <string name="user_location_permission_not_granted">Vous n\'avez pas accordé d\'autorisation de localisation</string>
- <string name="please_enter_valid_lat_long">Merci d\'entrer une valeur de latitude et de longitude valides</string>
- <string name="quick_protection">Protection Rapide</string>
- <string name="privacy_dashboard">Tableau de bord de Confidentialité</string>
- <string name="click_to_learn_more">Cliquez pour en savoir plus</string>
- <string name="apps_permissions">Autorisations des apps</string>
- <string name="trackers">Pisteurs</string>
- <string name="following_trackers_in_use">Les pisteurs suivants sont en cours d\'utilisation</string>
- <string name="enable_disable_tracker_info">Activer ou désactiver ce pisteur pour les apps suivantes</string>
- <string name="tracker">Pisteur</string>
<string name="ipscrambling_info">Votre adresse Internet ou adresse IP est l\'identifiant attribué à votre téléphone lorsqu\'il est connecté à Internet.
\n
\n\"Gérer mon adresse Internet\" vous permet d\'utiliser une fausse adresse IP au lieu de votre véritable adresse IP. Ainsi, votre activité Internet ne peut pas être liée à votre véritable adresse IP et à votre appareil.</string>
@@ -90,12 +65,7 @@
<string name="location_info">Votre localisation peut révéler beaucoup de choses sur vous-même ou sur vos activités.
\n
\n\"Gérer ma position\" vous permet d\'utiliser une fausse position au lieu de votre position réelle. De cette façon, votre localisation réelle n\'est pas partagé avec des applications qui pourraient vous espionner.</string>
- <string name="permission_control_info">Gérez et contrôlez les apps demandant diverses autorisations.</string>
- <string name="user_location_permission_explanation">Cette app a besoin d\'autorisations de localisation pour afficher ses fonctionnalités.</string>
<string name="trackers_info">