[tor-commits] [orbot/master] handle phantom selection of country exit
n8fr8 at torproject.org
n8fr8 at torproject.org
Sat May 12 04:50:45 UTC 2018
commit af1d9337586e218c7791fc4e9a26fd64ab0891cd
Author: n8fr8 <nathan at freitas.net>
Date: Fri May 11 23:24:21 2018 -0400
handle phantom selection of country exit
- also support custom exit override issue
---
.../org/torproject/android/OrbotMainActivity.java | 118 +++++++++++++--------
1 file changed, 71 insertions(+), 47 deletions(-)
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 6fc5c456..e3fd1a40 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -360,57 +360,79 @@ public class OrbotMainActivity extends AppCompatActivity
});
- String currentExit = Prefs.getExitNodes();
- int selIdx = -1;
-
- ArrayList<String> cList = new ArrayList<String>();
- cList.add(0, getString(R.string.vpn_default_world));
-
- for (int i = 0; i < TorServiceConstants.COUNTRY_CODES.length; i++)
- {
- Locale locale = new Locale("",TorServiceConstants.COUNTRY_CODES[i]);
- cList.add(locale.getDisplayCountry());
-
- if (currentExit.contains(TorServiceConstants.COUNTRY_CODES[i]))
- selIdx = i+1;
- }
-
- spnCountries = (Spinner)findViewById(R.id.spinnerCountry);
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, cList);
- spnCountries.setAdapter(adapter);
-
- if (selIdx != -1)
- spnCountries.setSelection(selIdx);
-
- spnCountries.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
- // your code here
-
- String country = null;
-
- if (position == 0)
- country = "";
- else
- country = '{' + TorServiceConstants.COUNTRY_CODES[position-1] + '}';
-
- Intent torService = new Intent(OrbotMainActivity.this, TorService.class);
- torService.setAction(TorServiceConstants.CMD_SET_EXIT);
- torService.putExtra("exit",country);
- startService(torService);
-
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parentView) {
- // your code here
- }
+ spnCountries = (Spinner)findViewById(R.id.spinnerCountry);
+ setCountrySpinner();
- });
+ mPulsator = (PulsatorLayout) findViewById(R.id.pulsator);
+ }
- mPulsator = (PulsatorLayout) findViewById(R.id.pulsator);
+ boolean firstTimeCountrySelect = true;
+
+ private void setCountrySpinner ()
+ {
+ String currentExit = Prefs.getExitNodes();
+ if (currentExit.length() > 4)
+ {
+ //someone put a complex value in, so let's disable
+ ArrayList<String> cList = new ArrayList<String>();
+ cList.add(0, currentExit);
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, cList);
+ spnCountries.setAdapter(adapter);
+
+ spnCountries.setEnabled(false);
+ }
+ else {
+ int selIdx = -1;
+
+ ArrayList<String> cList = new ArrayList<String>();
+ cList.add(0, getString(R.string.vpn_default_world));
+
+ for (int i = 0; i < TorServiceConstants.COUNTRY_CODES.length; i++) {
+ Locale locale = new Locale("", TorServiceConstants.COUNTRY_CODES[i]);
+ cList.add(locale.getDisplayCountry());
+ if (currentExit.contains(TorServiceConstants.COUNTRY_CODES[i]))
+ selIdx = i + 1;
+ }
+
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, cList);
+ spnCountries.setAdapter(adapter);
+
+ if (selIdx > 0)
+ spnCountries.setSelection(selIdx,true);
+
+ spnCountries.setOnItemSelectedListener(new OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
+ // your code here
+
+ if (firstTimeCountrySelect) {
+ firstTimeCountrySelect = false;
+ return;
+ }
+
+ String country = null;
+
+ if (position == 0)
+ country = "";
+ else
+ country = '{' + TorServiceConstants.COUNTRY_CODES[position - 1] + '}';
+
+ Intent torService = new Intent(OrbotMainActivity.this, TorService.class);
+ torService.setAction(TorServiceConstants.CMD_SET_EXIT);
+ torService.putExtra("exit", country);
+ startService(torService);
+
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> parentView) {
+ // your code here
+ }
+
+ });
+ }
}
@Override
@@ -1026,6 +1048,8 @@ public class OrbotMainActivity extends AppCompatActivity
mBtnBridges.setChecked(Prefs.bridgesEnabled());
mBtnVPN.setChecked(Prefs.useVpn());
+ setCountrySpinner();
+
requestTorStatus();
if (torStatus == null)
More information about the tor-commits
mailing list