1a926fe0770501e5536c6bfd51b09f332e076779
[PrivacyCell.git] / app / src / main / java / com / stoutner / privacycell / activities / ProtocolsActivity.kt
1 /*
2  * Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
3  *
4  * This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
5  *
6  * Privacy Cell is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * Privacy Cell is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Privacy Cell.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 package com.stoutner.privacycell.activities
21
22 import android.os.Bundle
23 import android.view.View
24 import android.widget.AdapterView
25 import android.widget.ListView
26 import android.widget.TextView
27
28 import androidx.appcompat.app.AppCompatActivity
29 import androidx.appcompat.widget.Toolbar
30 import androidx.preference.PreferenceManager
31
32 import com.stoutner.privacycell.R
33 import com.stoutner.privacycell.adapters.ProtocolArrayAdapter
34 import com.stoutner.privacycell.dialogs.WebViewDialog
35
36 class ProtocolsActivity : AppCompatActivity() {
37     public override fun onCreate(savedInstanceState: Bundle?) {
38         // Run the default commands.
39         super.onCreate(savedInstanceState)
40
41         // Get a handle for the shared preferences.
42         val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
43
44         // Get the bottom app bar preference.
45         val bottomAppBar = sharedPreferences.getBoolean(getString(R.string.bottom_app_bar_key), false)
46
47         // Set the content view.
48         if (bottomAppBar) {
49             setContentView(R.layout.protocols_bottom_appbar)
50         } else {
51             setContentView(R.layout.protocols_top_appbar)
52         }
53
54         // Get handles for the views.
55         val toolbar = findViewById<Toolbar>(R.id.toolbar)
56         val listView = findViewById<ListView>(R.id.listview)
57
58         // Set the toolbar as the action bar.
59         setSupportActionBar(toolbar)
60
61         // Get a handle for the action bar.
62         val actionBar = supportActionBar!!
63
64         // Display the back arrow in the action bar.
65         actionBar.setDisplayHomeAsUpEnabled(true)
66
67         // Create a protocol array list.
68         val protocolArrayList = ArrayList<Pair<String, Boolean>>()
69
70         // Populate the protocol array list.  Headers are followed by `true`.
71         protocolArrayList.add(Pair(getString(R.string.protocol_2g), true))
72         protocolArrayList.add(Pair(getString(R.string.cdma_detail), false))
73         protocolArrayList.add(Pair(getString(R.string.gsm_detail), false))
74         protocolArrayList.add(Pair(getString(R.string.iden_detail), false))
75         protocolArrayList.add(Pair(getString(R.string.gprs_detail), false))
76         protocolArrayList.add(Pair(getString(R.string.edge_detail), false))
77
78         protocolArrayList.add(Pair(getString(R.string.protocol_3g), true))
79         protocolArrayList.add(Pair(getString(R.string.rtt_detail), false))
80         protocolArrayList.add(Pair(getString(R.string.evdo_0_detail), false))
81         protocolArrayList.add(Pair(getString(R.string.evdo_a_detail), false))
82         protocolArrayList.add(Pair(getString(R.string.evdo_b_detail), false))
83         protocolArrayList.add(Pair(getString(R.string.ehrpd_detail), false))
84         protocolArrayList.add(Pair(getString(R.string.umts_detail), false))
85         protocolArrayList.add(Pair(getString(R.string.td_scdma_detail), false))
86         protocolArrayList.add(Pair(getString(R.string.hsdpa_detail), false))
87         protocolArrayList.add(Pair(getString(R.string.hsupa_detail), false))
88         protocolArrayList.add(Pair(getString(R.string.hspa_detail), false))
89         protocolArrayList.add(Pair(getString(R.string.hspap_detail), false))
90
91         protocolArrayList.add(Pair(getString(R.string.protocol_4g), true))
92         protocolArrayList.add(Pair(getString(R.string.lte_detail), false))
93         protocolArrayList.add(Pair(getString(R.string.lte_ca_detail), false))
94         protocolArrayList.add(Pair(getString(R.string.lte_advanced_pro_detail), false))
95         protocolArrayList.add(Pair(getString(R.string.nr_nsa_detail), false))
96         protocolArrayList.add(Pair(getString(R.string.nr_nsa_mmwave_detail), false))
97
98         protocolArrayList.add(Pair(getString(R.string.protocol_5g), true))
99         protocolArrayList.add(Pair(getString(R.string.nr_detail), false))
100         protocolArrayList.add(Pair(getString(R.string.nr_advanced_detail), false))
101
102         protocolArrayList.add(Pair(getString(R.string.protocol_other), true))
103         protocolArrayList.add(Pair(getString(R.string.iwlan_detail), false))
104
105         // Instantiate the protocol array adapter.
106         val protocolArrayAdapter = ProtocolArrayAdapter(this, protocolArrayList)
107
108         // Set the list view adapter.
109         listView.adapter = protocolArrayAdapter
110
111         // Listen for clicks on items in the list view.
112         listView.onItemClickListener = AdapterView.OnItemClickListener { _: AdapterView<*>?, view: View, _: Int, _: Long ->
113             // Get a handle for the text view.
114             val textview = view.findViewById<TextView>(R.id.textview)
115
116             // Show an alert dialog if a protocol item was selected.
117             when (textview.text) {
118                 getString(R.string.gprs_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_GPRS)
119                 getString(R.string.edge_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EDGE)
120                 getString(R.string.umts_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_UMTS)
121                 getString(R.string.cdma_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_CDMA)
122                 getString(R.string.evdo_0_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EVDO_0)
123                 getString(R.string.evdo_a_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EVDO_A)
124                 getString(R.string.rtt_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_1xRTT)
125                 getString(R.string.hsdpa_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_HSDPA)
126                 getString(R.string.hsupa_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_HSUPA)
127                 getString(R.string.hspa_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_HSPA)
128                 getString(R.string.iden_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_IDEN)
129                 getString(R.string.evdo_b_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EVDO_B)
130                 getString(R.string.lte_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_LTE)
131                 getString(R.string.ehrpd_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EHRPD)
132                 getString(R.string.hspap_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_HSPAP)
133                 getString(R.string.gsm_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_GSM)
134                 getString(R.string.td_scdma_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_TD_SCDMA)
135                 getString(R.string.iwlan_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_IWLAN)
136                 getString(R.string.nr_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_NR)
137                 getString(R.string.lte_ca_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_LTE_CA)
138                 getString(R.string.lte_advanced_pro_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_LTE_ADVANCED_PRO)
139                 getString(R.string.nr_nsa_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_NSA)
140                 getString(R.string.nr_nsa_mmwave_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_NSA_MMWAVE)
141                 getString(R.string.nr_advanced_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_ADVANCED)
142                 else -> null
143             }?.show(supportFragmentManager, getString(R.string.protocols))
144         }
145     }
146 }