... |
... |
@@ -47,6 +47,8 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { |
47
|
47
|
private var _binding: FragmentTorConnectionAssistBinding? = null
|
48
|
48
|
private val binding get() = _binding!!
|
49
|
49
|
|
|
50
|
+ private lateinit var regionDropDownSpinnerAdapter: ArrayAdapter<String>
|
|
51
|
+
|
50
|
52
|
override fun onCreateView(
|
51
|
53
|
inflater: LayoutInflater,
|
52
|
54
|
container: ViewGroup?,
|
... |
... |
@@ -127,7 +129,7 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { |
127
|
129
|
setTorConnectImage(screen)
|
128
|
130
|
setTitle(screen)
|
129
|
131
|
setQuickStart(screen)
|
130
|
|
- setCountryDropDown(screen)
|
|
132
|
+ updateRegionDropdown(screen)
|
131
|
133
|
setButton1(screen)
|
132
|
134
|
setButton2(screen)
|
133
|
135
|
setSplashLogo(screen)
|
... |
... |
@@ -203,19 +205,18 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { |
203
|
205
|
}
|
204
|
206
|
}
|
205
|
207
|
|
206
|
|
- private fun setCountryDropDown(screen: ConnectAssistUiState) {
|
|
208
|
+ private fun updateRegionDropdown(screen: ConnectAssistUiState) {
|
207
|
209
|
if (screen.regionDropDownVisible) {
|
208
|
|
- val spinnerAdapter: ArrayAdapter<String> = initializeSpinner()
|
209
|
210
|
if (binding.countryDropDown.isEmpty()) {
|
210
|
|
- populateRegionDropDown(spinnerAdapter)
|
211
|
|
- setOnItemSelectedListener()
|
|
211
|
+ regionDropDownSpinnerAdapter = initializeSpinner()
|
|
212
|
+ torConnectionAssistViewModel.fetchRegionNames()
|
212
|
213
|
}
|
213
|
214
|
|
214
|
|
- setFirstItemInCountryDropDown(spinnerAdapter, getString(screen.regionDropDownDefaultItem))
|
|
215
|
+ setFirstItemInCountryDropDown(getString(screen.regionDropDownDefaultItem))
|
215
|
216
|
|
216
|
217
|
if (screen == ConnectAssistUiState.ChooseRegion || screen == ConnectAssistUiState.ConfirmRegion || screen == ConnectAssistUiState.RegionNotFound) {
|
217
|
218
|
torConnectionAssistViewModel.selectDefaultRegion()
|
218
|
|
- binding.countryDropDown.setSelection(spinnerAdapter.getPosition(torConnectionAssistViewModel.selectedCountryCode.value))
|
|
219
|
+ setDropDownSelectionToSelectedCountryCode()
|
219
|
220
|
}
|
220
|
221
|
|
221
|
222
|
binding.unblockTheInternetInCountryDescription.visibility = View.VISIBLE
|
... |
... |
@@ -226,14 +227,23 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { |
226
|
227
|
}
|
227
|
228
|
}
|
228
|
229
|
|
229
|
|
- private fun setFirstItemInCountryDropDown(
|
230
|
|
- spinnerAdapter: ArrayAdapter<String>,
|
231
|
|
- item: String,
|
232
|
|
- ) {
|
233
|
|
- if (!spinnerAdapter.isEmpty) {
|
234
|
|
- spinnerAdapter.remove(spinnerAdapter.getItem(0))
|
|
230
|
+ private fun setDropDownSelectionToSelectedCountryCode() {
|
|
231
|
+ binding.countryDropDown.setSelection(
|
|
232
|
+ indexOfSelectedCountryCode(),
|
|
233
|
+ )
|
|
234
|
+ }
|
|
235
|
+
|
|
236
|
+ private fun indexOfSelectedCountryCode() : Int {
|
|
237
|
+ return torConnectionAssistViewModel.regionCodeNameMap.value?.keys?.indexOf(
|
|
238
|
+ torConnectionAssistViewModel.selectedCountryCode.value,
|
|
239
|
+ )?.plus(1) ?: 0
|
|
240
|
+ }
|
|
241
|
+
|
|
242
|
+ private fun setFirstItemInCountryDropDown(item: String) {
|
|
243
|
+ if (!regionDropDownSpinnerAdapter.isEmpty) {
|
|
244
|
+ regionDropDownSpinnerAdapter.remove(regionDropDownSpinnerAdapter.getItem(0))
|
235
|
245
|
}
|
236
|
|
- spinnerAdapter.insert(item, 0)
|
|
246
|
+ regionDropDownSpinnerAdapter.insert(item, 0)
|
237
|
247
|
}
|
238
|
248
|
|
239
|
249
|
private fun initializeSpinner(): ArrayAdapter<String> {
|
... |
... |
@@ -245,26 +255,6 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { |
245
|
255
|
)
|
246
|
256
|
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
247
|
257
|
binding.countryDropDown.adapter = spinnerAdapter
|
248
|
|
- return spinnerAdapter
|
249
|
|
- }
|
250
|
|
-
|
251
|
|
- private fun populateRegionDropDown(spinnerAdapter: ArrayAdapter<String>) {
|
252
|
|
- torConnectionAssistViewModel.fetchRegionNames()
|
253
|
|
- viewLifecycleOwner.lifecycleScope.launch {
|
254
|
|
- repeatOnLifecycle(Lifecycle.State.STARTED) {
|
255
|
|
- torConnectionAssistViewModel.regionCodeNameMap.collect {
|
256
|
|
- Log.d(TAG, "regionCodeNameMap: $it")
|
257
|
|
- if (it != null) {
|
258
|
|
- spinnerAdapter.clear()
|
259
|
|
- spinnerAdapter.add(getString(torConnectionAssistViewModel.torConnectScreen.value.regionDropDownDefaultItem))
|
260
|
|
- spinnerAdapter.addAll(it.values)
|
261
|
|
- }
|
262
|
|
- }
|
263
|
|
- }
|
264
|
|
- }
|
265
|
|
- }
|
266
|
|
-
|
267
|
|
- private fun setOnItemSelectedListener() {
|
268
|
258
|
binding.countryDropDown.onItemSelectedListener =
|
269
|
259
|
object : AdapterView.OnItemSelectedListener {
|
270
|
260
|
override fun onItemSelected(
|
... |
... |
@@ -279,6 +269,20 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { |
279
|
269
|
|
280
|
270
|
override fun onNothingSelected(parent: AdapterView<*>?) {}
|
281
|
271
|
}
|
|
272
|
+
|
|
273
|
+ viewLifecycleOwner.lifecycleScope.launch {
|
|
274
|
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
|
|
275
|
+ torConnectionAssistViewModel.regionCodeNameMap.collect {
|
|
276
|
+ if (it != null) {
|
|
277
|
+ spinnerAdapter.clear()
|
|
278
|
+ spinnerAdapter.add(getString(torConnectionAssistViewModel.torConnectScreen.value.regionDropDownDefaultItem))
|
|
279
|
+ spinnerAdapter.addAll(it.values)
|
|
280
|
+ }
|
|
281
|
+ }
|
|
282
|
+ }
|
|
283
|
+ }
|
|
284
|
+
|
|
285
|
+ return spinnerAdapter
|
282
|
286
|
}
|
283
|
287
|
|
284
|
288
|
private fun setButton1(screen: ConnectAssistUiState) {
|