Format the main activity.
authorSoren Stoutner <soren@stoutner.com>
Sat, 14 Aug 2021 06:14:55 +0000 (23:14 -0700)
committerSoren Stoutner <soren@stoutner.com>
Sat, 14 Aug 2021 06:14:55 +0000 (23:14 -0700)
app/src/main/AndroidManifest.xml
app/src/main/java/com/stoutner/privacycell/activities/PrivacyCell.kt
app/src/main/res/drawable/not_secure.xml [new file with mode: 0644]
app/src/main/res/drawable/secure_5g_nr_sa.xml [new file with mode: 0644]
app/src/main/res/layout/privacy_cell_linearlayout.xml
app/src/main/res/values/colors.xml
app/src/main/res/values/strings.xml

index d63e1a4dc349168af2df13ce9a4fc7d433dad542..d807db0bd540daf6f0016bb1d03194484c1fb169 100644 (file)
@@ -40,7 +40,6 @@
         android:theme="@style/Theme.PrivacyCell" >
 
         <!-- The label uses the short name so that it isn't truncated under the icon in the launcher on most phones.
-            The theme has to be defined here or an ugly title bar is displayed when the app launches.  TODO.
             `android:launchMode="singleTask"` makes the app launch in a new task instead of inside the task of the program that sends it an intent.
             It also makes it reuse an existing Privacy Cell activity if available instead of launching a new one. -->
         <activity
index 2bbaa7cf7a77162f19dc873b7dbabb4be6da85e4..b45701832350f774b513dca3664f393164567380 100644 (file)
@@ -26,9 +26,11 @@ import android.os.Bundle
 import android.telephony.PhoneStateListener
 import android.telephony.TelephonyDisplayInfo
 import android.telephony.TelephonyManager
+import android.widget.ImageView
 import android.widget.TextView
 
 import androidx.appcompat.app.AppCompatActivity
+import androidx.appcompat.content.res.AppCompatResources
 import androidx.core.app.ActivityCompat
 
 import com.stoutner.privacycell.R
@@ -42,10 +44,14 @@ class PrivacyCell : AppCompatActivity() {
         setContentView(R.layout.privacy_cell_linearlayout)
 
         // Get handles for the views.
+        val secureFromStingrayImageView = findViewById<ImageView>(R.id.secure_from_stingray_imageview)
+        val secureFromStingrayTextView = findViewById<TextView>(R.id.secure_from_stingray_textview)
         val voiceNetworkTextView = findViewById<TextView>(R.id.voice_network)
+        val voiceNetworkDetailsTextView = findViewById<TextView>(R.id.voice_network_details)
         val dataNetworkTextView = findViewById<TextView>(R.id.data_network)
+        val dataNetworkDetailsTextView = findViewById<TextView>(R.id.data_network_details)
         val additionalNetworkInfoTextView = findViewById<TextView>(R.id.additional_network_info)
-        val secureFromStingrayTextView = findViewById<TextView>(R.id.secure_from_stingray)
+        val additionalNetworkInfoDetailsTextView = findViewById<TextView>(R.id.additional_network_info_details)
 
         // TODO.
         if (ActivityCompat.checkSelfPermission(
@@ -63,72 +69,90 @@ class PrivacyCell : AppCompatActivity() {
             return
         }
 
-        // Get a handle for the the telephone Manager.
+        // Get a handle for the the telephone Manager and the context.
         val telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
+        val context: Context = this
 
         // Get the voice network type.
         val voiceNetworkType = getNetworkType(telephonyManager.voiceNetworkType)
 
-        // Populate the voice network text view.
-        voiceNetworkTextView.text = getString(R.string.voice_network, voiceNetworkType)
+        // Populate the voice network text views.
+        voiceNetworkTextView.text = getString(R.string.voice_network, voiceNetworkType[0])
+        voiceNetworkDetailsTextView.text = voiceNetworkType[1]
 
         // Listen to changes in the cell network state.
         telephonyManager.listen(object : PhoneStateListener() {
-            override fun onDisplayInfoChanged(telephonyDisplayInfo: TelephonyDisplayInfo) {
+            override fun onDisplayInfoChanged(telephonyDisplayInfo: TelephonyDisplayInfo) {// Populate the secure from stingray text view.  <https://source.android.com/devices/tech/connect/acts-5g-testing>
+                // Populate the stingray security information.
+                if (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_NR) {  // This is a secure 5G NR SA network.
+                    // Populate the image view.
+                    secureFromStingrayImageView.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.secure_5g_nr_sa))
+
+                    // Set the text.
+                    secureFromStingrayTextView.text = getString(R.string.secure_from_stingray)
+
+                    // Set the text color.
+                    secureFromStingrayTextView.setTextColor(getColor(R.color.blue_700))
+                } else {  // This is not a secure 5G NR SA network.
+                    // Populate the image view.
+                    secureFromStingrayImageView.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.not_secure))
+
+                    // Set the text.
+                    secureFromStingrayTextView.text = getString(R.string.not_secure_from_stingray)
+
+                    // Set the text color.
+                    secureFromStingrayTextView.setTextColor(getColor(R.color.red_700))
+
                 // Get the strings that correspond to the network information.
                 val dataNetworkType = getNetworkType(telephonyDisplayInfo.networkType)
                 val additionalNetworkInfo = getAdditionalNetworkInfo(telephonyDisplayInfo.overrideNetworkType)
 
-                // Populate the network text views.
-                dataNetworkTextView.text = getString(R.string.data_network, dataNetworkType)
-                additionalNetworkInfoTextView.text = getString(R.string.additional_network_info, additionalNetworkInfo)
-
-                // Populate the secure from stingray text view.  <https://source.android.com/devices/tech/connect/acts-5g-testing>
-                if (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_NR) {
-                    secureFromStingrayTextView.text = getString(R.string.secure_from_stingray)
-                } else {
-                    secureFromStingrayTextView.text = getString(R.string.not_secure_from_stingray)
+                // Populate the data network text views.
+                dataNetworkTextView.text = getString(R.string.data_network, dataNetworkType[0])
+                dataNetworkDetailsTextView.text = dataNetworkType[1]
+                additionalNetworkInfoTextView.text = getString(R.string.additional_network_info, additionalNetworkInfo[0])
+                additionalNetworkInfoDetailsTextView.text = additionalNetworkInfo[1]
                 }
             }
         }, PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED)
     }
 
-    private fun getNetworkType(networkType: Int) : String {
+    private fun getNetworkType(networkType: Int) : Array<String> {
         // Return the string that corresponds to the network type.
         return when(networkType) {
-            TelephonyManager.NETWORK_TYPE_UNKNOWN -> getString(R.string.unknown)
-            TelephonyManager.NETWORK_TYPE_GPRS -> getString(R.string.gprs)
-            TelephonyManager.NETWORK_TYPE_EDGE -> getString(R.string.edge)
-            TelephonyManager.NETWORK_TYPE_UMTS -> getString(R.string.umts)
-            TelephonyManager.NETWORK_TYPE_CDMA -> getString(R.string.cdma)
-            TelephonyManager.NETWORK_TYPE_EVDO_0 -> getString(R.string.evdo_0)
-            TelephonyManager.NETWORK_TYPE_EVDO_A -> getString(R.string.evdo_a)
-            TelephonyManager.NETWORK_TYPE_1xRTT -> getString(R.string.rtt)
-            TelephonyManager.NETWORK_TYPE_HSDPA -> getString(R.string.hsdpa)
-            TelephonyManager.NETWORK_TYPE_HSUPA -> getString(R.string.hsupa)
-            TelephonyManager.NETWORK_TYPE_HSPA -> getString(R.string.hspa)
-            TelephonyManager.NETWORK_TYPE_IDEN -> getString(R.string.iden)
-            TelephonyManager.NETWORK_TYPE_EVDO_B -> getString(R.string.evdo_b)
-            TelephonyManager.NETWORK_TYPE_LTE -> getString(R.string.lte)
-            TelephonyManager.NETWORK_TYPE_EHRPD -> getString(R.string.ehrpd)
-            TelephonyManager.NETWORK_TYPE_HSPAP -> getString(R.string.hspap)
-            TelephonyManager.NETWORK_TYPE_GSM -> getString(R.string.gsm)
-            TelephonyManager.NETWORK_TYPE_TD_SCDMA -> getString(R.string.td_scdma)
-            TelephonyManager.NETWORK_TYPE_IWLAN -> getString(R.string.iwlan)
-            TelephonyManager.NETWORK_TYPE_NR -> getString(R.string.nr)
-            else -> getString(R.string.error)
+            TelephonyManager.NETWORK_TYPE_UNKNOWN -> arrayOf(getString(R.string.unknown), getString(R.string.unknown))
+            TelephonyManager.NETWORK_TYPE_GPRS -> arrayOf(getString(R.string.gprs), getString(R.string.gprs_detal))
+            TelephonyManager.NETWORK_TYPE_EDGE -> arrayOf(getString(R.string.edge), getString(R.string.edge_detail))
+            TelephonyManager.NETWORK_TYPE_UMTS -> arrayOf(getString(R.string.umts), getString(R.string.umts_detail))
+            TelephonyManager.NETWORK_TYPE_CDMA -> arrayOf(getString(R.string.cdma), getString(R.string.cdma_detail))
+            TelephonyManager.NETWORK_TYPE_EVDO_0 -> arrayOf(getString(R.string.evdo_0), getString(R.string.evdo_0_detail))
+            TelephonyManager.NETWORK_TYPE_EVDO_A -> arrayOf(getString(R.string.evdo_a), getString(R.string.evdo_a_detail))
+            TelephonyManager.NETWORK_TYPE_1xRTT -> arrayOf(getString(R.string.rtt), getString(R.string.rtt_detail))
+            TelephonyManager.NETWORK_TYPE_HSDPA -> arrayOf(getString(R.string.hsdpa), getString(R.string.hsdpa_detail))
+            TelephonyManager.NETWORK_TYPE_HSUPA -> arrayOf(getString(R.string.hsupa), getString(R.string.hsupa_detail))
+            TelephonyManager.NETWORK_TYPE_HSPA -> arrayOf(getString(R.string.hspa), getString(R.string.hspa_detail))
+            TelephonyManager.NETWORK_TYPE_IDEN -> arrayOf(getString(R.string.iden), getString(R.string.iden_detail))
+            TelephonyManager.NETWORK_TYPE_EVDO_B -> arrayOf(getString(R.string.evdo_b), getString(R.string.evdo_b_detail))
+            TelephonyManager.NETWORK_TYPE_LTE -> arrayOf(getString(R.string.lte), getString(R.string.lte_detail))
+            TelephonyManager.NETWORK_TYPE_EHRPD -> arrayOf(getString(R.string.ehrpd), getString(R.string.ehrpd_detail))
+            TelephonyManager.NETWORK_TYPE_HSPAP -> arrayOf(getString(R.string.hspap), getString(R.string.hspap_detail))
+            TelephonyManager.NETWORK_TYPE_GSM -> arrayOf(getString(R.string.gsm), getString(R.string.gsm_detail))
+            TelephonyManager.NETWORK_TYPE_TD_SCDMA -> arrayOf(getString(R.string.td_scdma), getString(R.string.td_scdma_detail))
+            TelephonyManager.NETWORK_TYPE_IWLAN -> arrayOf(getString(R.string.iwlan), getString(R.string.iwlan_detail))
+            TelephonyManager.NETWORK_TYPE_NR -> arrayOf(getString(R.string.nr), getString(R.string.nr_detail))
+            else -> arrayOf(getString(R.string.error), getString(R.string.error))
         }
     }
 
-    private fun getAdditionalNetworkInfo(overrideNetworkType: Int) : String {
+    private fun getAdditionalNetworkInfo(overrideNetworkType: Int) : Array<String> {
         // Return the string that corresponds to the override network type.
         return when(overrideNetworkType) {
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE -> getString(R.string.none)
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA -> getString(R.string.lte_ca)
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO -> getString(R.string.lte_advanced_pro)
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA -> getString(R.string.lte_nr_nsa)
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE -> getString(R.string.lte_nr_nsa_mmwave)
-            else -> getString(R.string.error)
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE -> arrayOf(getString(R.string.none), "")
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA -> arrayOf(getString(R.string.lte_ca), getString(R.string.lte_ca_detail))
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO -> arrayOf(getString(R.string.lte_advanced_pro), getString(R.string.lte_advanced_pro_detail))
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA -> arrayOf(getString(R.string.lte_nr_nsa), getString(R.string.lte_nr_nsa_detail))
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE -> arrayOf(getString(R.string.lte_nr_nsa_mmwave), getString(R.string.lte_nr_nsa_mmwave_detail))
+            else -> arrayOf(getString(R.string.error), "")
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/res/drawable/not_secure.xml b/app/src/main/res/drawable/not_secure.xml
new file mode 100644 (file)
index 0000000..de128f3
--- /dev/null
@@ -0,0 +1,39 @@
+<!--
+  This file is derived from `security` and `do_not_disturb`, which are part of the Android Material icon set.  They are released under the Apache License 2.0.
+
+  Modifications copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
+
+  Privacy Cell 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.
+
+  Privacy Cell 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 Privacy Browser.  If not, see <http://www.gnu.org/licenses/>.The resulting image is released under the GPLv3+ license. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="200dp"
+    android:width="200dp"
+    android:viewportHeight="256"
+    android:viewportWidth="256" >
+
+    <path
+        android:fillColor="#b71c1c"
+        android:pathData="m128,12.8 l-94.255,41.891 0,62.836c0,58.124 40.215,112.477 94.255,125.673 54.039,-13.196 94.255,-67.549 94.255,-125.673l0,-62.836z" />
+
+    <path
+        android:fillColor="#d32f2f"
+        android:pathData="m128,0 l-104.727,46.545 0,69.818C23.273,180.945 67.956,241.338 128,256 188.044,241.338 232.727,180.945 232.727,116.364l0,-69.818L128,0ZM128,127.884 L209.455,127.884C203.287,175.825 171.287,218.531 128,231.913l0,-103.913 -81.455,0 0,-66.327L128,25.484l0,102.4z" />
+
+    <path
+        android:fillColor="#ffffff"
+        android:pathData="M128,47.744C83.248,47.744 46.928,84.064 46.928,128.816 46.928,173.568 83.248,209.888 128,209.888 172.752,209.888 209.072,173.568 209.072,128.816 209.072,84.064 172.752,47.744 128,47.744ZM128,193.673C92.166,193.673 63.143,164.65 63.143,128.816 63.143,113.818 68.25,100.035 76.844,89.091L167.725,179.972C156.78,188.566 142.998,193.673 128,193.673ZM179.156,168.541 L88.275,77.66C99.22,69.066 113.002,63.959 128,63.959c35.834,0 64.857,29.024 64.857,64.857 0,14.998 -5.108,28.78 -13.701,39.725z" />
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/secure_5g_nr_sa.xml b/app/src/main/res/drawable/secure_5g_nr_sa.xml
new file mode 100644 (file)
index 0000000..33ac99f
--- /dev/null
@@ -0,0 +1,42 @@
+<!--
+  This file is derived from `security` and `5g`, which are part of the Android Material icon set.  They are released under the Apache License 2.0.
+
+  Modifications copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
+
+  Privacy Cell 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.
+
+  Privacy Cell 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 Privacy Browser.  If not, see <http://www.gnu.org/licenses/>.The resulting image is released under the GPLv3+ license. -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="200dp"
+    android:width="200dp"
+    android:viewportHeight="256"
+    android:viewportWidth="256" >
+
+    <path
+        android:fillColor="#0d4781"
+        android:pathData="m128,12.8 l-94.255,41.891v62.836c0,58.124 40.215,112.477 94.255,125.673 54.039,-13.196 94.255,-67.549 94.255,-125.673v-62.836z" />
+
+    <path
+        android:fillColor="#1976d2"
+        android:pathData="m128,0 l-104.727,46.545v69.818C23.273,180.945 67.956,241.338 128,256 188.044,241.338 232.727,180.945 232.727,116.364v-69.818zM128,127.884h81.455C203.287,175.825 171.287,218.531 128,231.913L128,128L46.545,128L46.545,61.673L128,25.484Z" />
+
+    <path
+        android:fillColor="#ffffff"
+        android:pathData="M103.507,92.852L62.961,92.852l0,24.328l32.437,0c8.92,0 16.218,7.298 16.218,16.218L111.617,157.726c0,8.92 -7.298,16.218 -16.218,16.218L54.852,173.944C50.311,173.944 46.743,170.376 46.743,165.835l0,0C46.743,161.294 50.311,157.726 54.852,157.726L95.398,157.726L95.398,133.398L54.852,133.398C50.311,133.398 46.743,129.83 46.743,125.289L46.743,84.743C46.743,80.202 50.311,76.633 54.852,76.633l48.655,0C108.048,76.633 111.617,80.202 111.617,84.743l0,0C111.617,89.284 108.048,92.852 103.507,92.852Z" />
+
+    <path
+        android:fillColor="#ffffff"
+        android:pathData="M168.381,133.398L192.709,133.398L192.709,157.726L144.053,157.726L144.053,92.852l56.765,0C205.359,92.852 208.927,89.284 208.927,84.743l0,0C208.927,80.202 205.359,76.633 200.818,76.633L144.053,76.633c-8.92,0 -16.218,7.298 -16.218,16.218l0,64.874c0,8.92 7.298,16.218 16.218,16.218l48.655,0c8.92,0 16.218,-7.298 16.218,-16.218L208.927,125.289C208.927,120.748 205.359,117.18 200.818,117.18l-32.437,0C163.84,117.18 160.272,120.748 160.272,125.289l0,0c0,4.541 3.568,8.109 8.109,8.109z" />
+</vector>
\ No newline at end of file
index b8473de92b0070fafdfc95c3a0aaee4ae1823fb1..167ae8fd12f726f41c638387cfce7e616821c8d3 100644 (file)
   You should have received a copy of the GNU General Public License
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
-<LinearLayout
+<ScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_height="match_parent"
-    android:orientation="vertical" >
+    android:layout_width="wrap_content" >
 
-    <TextView
-        android:id="@+id/voice_network"
+    <LinearLayout
         android:layout_height="wrap_content"
-        android:layout_width="wrap_content" />
+        android:layout_width="wrap_content"
+        android:orientation="vertical"
+        android:padding="15dp" >
 
-    <TextView
-        android:id="@+id/data_network"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content" />
+        <!-- Secure from stingray. -->
+        <ImageView
+            android:id="@+id/secure_from_stingray_imageview"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            tools:ignore="ContentDescription" />
 
-    <TextView
-        android:id="@+id/additional_network_info"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content" />
+        <TextView
+            android:id="@+id/secure_from_stingray_textview"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:textAlignment="center"
+            android:layout_marginTop="10dp"
+            android:textSize="20sp"
+            android:textStyle="bold" />
 
-    <TextView
-        android:id="@+id/secure_from_stingray"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content" />
-</LinearLayout>
\ No newline at end of file
+        <!-- Voice network. -->
+        <TextView
+            android:id="@+id/voice_network"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:textAlignment="center"
+            android:layout_marginTop="30dp"
+            android:textColor="@color/blue_700"
+            android:textSize="18sp"
+            android:textStyle="bold" />
+
+        <TextView
+            android:id="@+id/voice_network_details"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:textAlignment="center"
+            android:layout_marginBottom="10dp" />
+
+        <!-- Data network. -->
+        <TextView
+            android:id="@+id/data_network"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:textAlignment="center"
+            android:textColor="@color/blue_700"
+            android:textSize="18sp"
+            android:textStyle="bold" />
+
+        <TextView
+            android:id="@+id/data_network_details"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:textAlignment="center"
+            android:layout_marginBottom="10dp" />
+
+        <!-- Additional network info. -->
+        <TextView
+            android:id="@+id/additional_network_info"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:textAlignment="center"
+            android:textColor="@color/blue_700"
+            android:textSize="18sp"
+            android:textStyle="bold" />
+
+        <TextView
+            android:id="@+id/additional_network_info_details"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:textAlignment="center" />
+    </LinearLayout>
+</ScrollView>
\ No newline at end of file
index f8c6127d327620c93d2b2d00342a68e97b98a48d..7bcc7820f3d278095f21bf75987dbd385f66e78d 100644 (file)
@@ -1,10 +1,29 @@
 <?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
+
+  Privacy Cell 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.
+
+  Privacy Cell 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 Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
+
 <resources>
-    <color name="purple_200">#FFBB86FC</color>
-    <color name="purple_500">#FF6200EE</color>
-    <color name="purple_700">#FF3700B3</color>
-    <color name="teal_200">#FF03DAC5</color>
-    <color name="teal_700">#FF018786</color>
     <color name="black">#FF000000</color>
+    <color name="blue_500">#FF2196F3</color>
+    <color name="blue_700">#FF1976D2</color>
+    <color name="blue_900">#FF0D47A1</color>
+    <color name="red_600">#FFE53935</color>
+    <color name="red_700">#FFD32F2F</color>
     <color name="white">#FFFFFFFF</color>
 </resources>
\ No newline at end of file
index 19b37b0a427954bfcd9181a476158fb74533cd85..5a461af95d9d08693ab07ac4966a8c2d788199aa 100644 (file)
     <!-- Network Types. -->
     <string name="unknown">Unknown</string>
     <string name="gprs">GPRS</string>
+    <string name="gprs_detal">General Packet Radio Service</string>
     <string name="edge">EDGE</string>
+    <string name="edge_detail">Enhanced Data rates for GSM Evolution</string>
     <string name="umts">UMTS</string>
+    <string name="umts_detail">Universal Mobile Telecommunications System</string>
     <string name="cdma">CDMA</string>
+    <string name="cdma_detail">Code-Division Multiple Access</string>
     <string name="evdo_0">EVDO 0</string>
+    <string name="evdo_0_detail">Evolution-Data Optimized release 0</string>
     <string name="evdo_a">EVDO A</string>
+    <string name="evdo_a_detail">Evolution-Data Optimized revision A</string>
     <string name="rtt">1xRTT</string>
+    <string name="rtt_detail">Single-Carrier Radio Transmission Technology</string>
     <string name="hsdpa">HSDPA</string>
+    <string name="hsdpa_detail">High Speed Downlink Packet Access</string>
     <string name="hsupa">HSUPA</string>
+    <string name="hsupa_detail">High-Speed Uplink Packet Access</string>
     <string name="hspa">HSPA</string>
+    <string name="hspa_detail">High Speed Packet Access</string>
     <string name="iden">IDEN</string>
+    <string name="iden_detail">Integrated Digital Enhanced Network</string>
     <string name="evdo_b">EVDO B</string>
+    <string name="evdo_b_detail">Evolution-Data Optimized revision B</string>
     <string name="lte">LTE</string>
+    <string name="lte_detail">Long-Term Evolution</string>
     <string name="ehrpd">EHRPD</string>
+    <string name="ehrpd_detail">Enhanced High-Rate Packet Data</string>
     <string name="hspap">HSPAP</string>
+    <string name="hspap_detail">High Speed Packet Access Plus</string>
     <string name="gsm">GSM</string>
-    <string name="td_scdma">TD SCDMA</string>
+    <string name="gsm_detail">Global System for Mobile Communications</string>
+    <string name="td_scdma">TD-SCDMA</string>
+    <string name="td_scdma_detail">Time Division-Synchronous Code Division Multiple Access</string>
     <string name="iwlan">IWLAN</string>
+    <string name="iwlan_detail">Interworking Wireless LAN</string>
     <string name="nr">NR</string>
+    <string name="nr_detail">New Radio</string>
     <string name="error">Error</string>
 
     <!-- Override Network Types. -->
     <string name="none">None</string>
     <string name="lte_ca">LTE CA</string>
+    <string name="lte_ca_detail">Long-Term Evolution Carrier Aggregation</string>
     <string name="lte_advanced_pro">LTE Advanced Pro</string>
-    <string name="lte_nr_nsa">LTE NR NSA - Long Term Evolution New Radio Non-StandAlone</string>
-    <string name="lte_nr_nsa_mmwave">LTE NR NSA MMWave - Long Term Evolution New Radio Non-StandAlong MilliMeter Wavae</string>
+    <string name="lte_advanced_pro_detail">mmWave 5G network</string>
+    <string name="lte_nr_nsa">LTE NR NSA</string>
+    <string name="lte_nr_nsa_detail">Long Term Evolution New Radio Non-Standalone</string>
+    <string name="lte_nr_nsa_mmwave">LTE NR NSA mmWave</string>
+    <string name="lte_nr_nsa_mmwave_detail">Long Term Evolution New Radio Non-Standalone millimeter Wave</string>
 
     <!-- Stingray. -->
-    <string name="secure_from_stingray">Your device is connected to a standalone 5G network and is (at least a little bit more) secure from stingray IMSI man-in-the-middle attacks.</string>
-    <string name="not_secure_from_stingray">Your device is not connected to a standalone 5G network and is not secure from stingray IMSI man-in-the-middle attacks.</string>
+    <string name="secure_from_stingray">Your device is connected to a standalone 5G network.\n\nIt is secure from stingray IMSI man-in-the-middle attacks.</string>
+    <string name="not_secure_from_stingray">Your device is not connected to a standalone 5G network.\n\nIt is not secure from stingray IMSI man-in-the-middle attacks.</string>
 </resources>
\ No newline at end of file