diff options
Diffstat (limited to 'app/src/fil/libre/repwifiapp/activities/VpnSettingsActivity.java')
-rw-r--r-- | app/src/fil/libre/repwifiapp/activities/VpnSettingsActivity.java | 227 |
1 files changed, 105 insertions, 122 deletions
diff --git a/app/src/fil/libre/repwifiapp/activities/VpnSettingsActivity.java b/app/src/fil/libre/repwifiapp/activities/VpnSettingsActivity.java index b9dab93..3c134d7 100644 --- a/app/src/fil/libre/repwifiapp/activities/VpnSettingsActivity.java +++ b/app/src/fil/libre/repwifiapp/activities/VpnSettingsActivity.java @@ -1,5 +1,5 @@ // -// Copyright 2017 Filippo "Fil" Bergamo <fil.bergamo@riseup.net> +// Copyright 2017, 2018 Filippo "Fil" Bergamo <fil.bergamo@riseup.net> // // This file is part of RepWifiApp. // @@ -20,37 +20,35 @@ package fil.libre.repwifiapp.activities; -import java.util.List; -import fil.libre.repwifiapp.ActivityLauncher; -import fil.libre.repwifiapp.Commons; -import fil.libre.repwifiapp.R; -import fil.libre.repwifiapp.ActivityLauncher.RequestCode; -import fil.libre.repwifiapp.helpers.AccessPointInfo; -import fil.libre.repwifiapp.helpers.OpenVpnManager; -import fil.libre.repwifiapp.helpers.Utils; -import android.os.Bundle; -import android.app.Activity; import android.content.Intent; +import android.os.Bundle; +import android.view.Gravity; import android.view.Menu; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; +import fil.libre.repwifiapp.ActivityLauncher; +import fil.libre.repwifiapp.R; +import fil.libre.repwifiapp.Utils; +import fil.libre.repwifiapp.network.AccessPointInfo; +import fil.libre.repwifiapp.network.NetworkManager; +import java.util.List; -public class VpnSettingsActivity extends Activity { +public class VpnSettingsActivity extends VpnAndConnectionBoundActivity { private AccessPointInfo currentNetwork; private Spinner spinProfile; private TextView summaryView; - + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_vpn_settings); - + String title = getString(R.string.title_activity_vpn_settings); - + Intent intent = getIntent(); if (!intent.hasExtra(ActivityLauncher.EXTRA_APINFO)) { this.setResult(RESULT_CANCELED); @@ -58,144 +56,129 @@ public class VpnSettingsActivity extends Activity { return; } - this.currentNetwork = (AccessPointInfo) intent.getExtras().getSerializable( - ActivityLauncher.EXTRA_APINFO); - if (this.currentNetwork == null) { - this.setResult(RESULT_CANCELED); - this.finish(); - return; - } - - this.currentNetwork = Commons.storage.getSavedNetwork(currentNetwork); - this.spinProfile = (Spinner)findViewById(R.id.spin_vpn_profile); - this.summaryView = (TextView)findViewById(R.id.lbl_vpn_settings); - String summary = getString(R.string.summary_vpn_settings).replace(OpenVpnManager.PLACEHOLDER_APPNAME, OpenVpnManager.APP_COMMON_NAME); + this.spinProfile = (Spinner) findViewById(R.id.spin_vpn_profile); + this.summaryView = (TextView) findViewById(R.id.lbl_vpn_settings); + String summary = getString(R.string.summary_vpn_settings).replace(PLACEHOLDER_APPNAME, + APP_COMMON_NAME); summaryView.setText(summary); - title += " " + currentNetwork.getSsid(); - this.setTitle(title); - - if (!checkExternalApp()){ - toggleSettingsEnabled(false); - } else { - initVpnManager(); - } + this.currentNetwork = (AccessPointInfo) intent.getExtras().getParcelable( + ActivityLauncher.EXTRA_APINFO); + + this.currentNetwork = NetworkManager.getSavedNetwork(currentNetwork); + if (this.currentNetwork != null) { + title += " " + this.currentNetwork.getSsid(); + this.setTitle(title); + toggleSettingsEnabled(true); + } } - @Override - public void onActivityResult(int requestCode, int resultCode, Intent intent) { - - switch (requestCode) { - - case RequestCode.VPN_PERMISSION: - - if (resultCode != RESULT_OK) { - toggleSettingsEnabled(false); - Utils.logDebug("User rejected vpn permission."); - String msg = getString(R.string.msg_vpn_no_permission).replace( - OpenVpnManager.PLACEHOLDER_APPNAME, OpenVpnManager.APP_COMMON_NAME); - Commons.showMessage(msg, this); - return; - } - - break; - - default: - - break; - + public void onStart() { + + super.onStart(); + if (!checkExternalApp() || currentNetwork == null) { + toggleSettingsEnabled(false); + } else { + beginGetExistingVpnProfiles(); } } - @Override public boolean onCreateOptionsMenu(Menu menu) { return true; } - private void initVpnManager(){ - - try { - - Intent intentAllow = OpenVpnManager.askApiPermissionsGetIntent(); - if (intentAllow != null){ - startActivityForResult(intentAllow, ActivityLauncher.RequestCode.VPN_PERMISSION); - } - - List<String> profiles = OpenVpnManager.getExistingProfiles(); - if (profiles.size() == 0){ - String msg = getString(R.string.msg_vpn_no_profile).replace(OpenVpnManager.PLACEHOLDER_APPNAME, OpenVpnManager.APP_COMMON_NAME); - Commons.showMessage(msg, this); - toggleSettingsEnabled(false); - return; - } - Spinner spin = (Spinner)findViewById(R.id.spin_vpn_profile); - - ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,profiles); - adapter.insert("",0); - spin.setAdapter(adapter); - spin.setSelection(adapter.getPosition(currentNetwork.getVpnProfileName())); - - } catch (Exception e) { - Utils.logError("Exception while creating openvpnmanager",e); - Commons.showMessage(getString(R.string.msg_vpn_connect_error)); - toggleSettingsEnabled(false); - } - - } - - private boolean checkExternalApp(){ - - if (! OpenVpnManager.isExternalAppInstalled(this)){ - String msg = getString(R.string.text_vpn_package_missing).replace(OpenVpnManager.PLACEHOLDER_APPNAME, OpenVpnManager.APP_COMMON_NAME); - Commons.showMessage(msg, this); + private boolean checkExternalApp() { + + if (!isExternalAppInstalled()) { + String msg = getString(R.string.text_vpn_package_missing).replace(PLACEHOLDER_APPNAME, + APP_COMMON_NAME); + Utils.showMessage(msg, this); toggleSettingsEnabled(false); return false; } else { return true; } - + } - - private void toggleSettingsEnabled(boolean enabled){ - + + private void toggleSettingsEnabled(boolean enabled) { + spinProfile.setEnabled(enabled); - - Button b = (Button)findViewById(R.id.btn_save_vpn_settings); + + Button b = (Button) findViewById(R.id.btn_save_vpn_settings); b.setEnabled(enabled); - + } - - public void btnSaveClick(View v){ - - String vpnProf = (String)spinProfile.getSelectedItem(); - - /*if (! vpnProf.isEmpty()){ - // check if profile name exists - if( OpenVpnManager.getUuidFromName(vpnProf) == null){ - Commons.showMessage(getString(R.string.msg_vpn_wrong_profile), this); - return; - } - - }*/ - + + public void btnSaveClick(View v) { + + String vpnProf = (String) spinProfile.getSelectedItem(); + // save profile currentNetwork.setVpnProfileName(vpnProf); - Commons.storage.save(currentNetwork); - + NetworkManager.save(currentNetwork); + terminate(); - + } - - public void btnBackClick(View v){ + + public void btnBackClick(View v) { terminate(); } - - private void terminate(){ + + private void terminate() { finish(); } + + @Override + protected void onVpnProfilesAvailable(List<String> profiles) { + + if (profiles.size() == 0) { + String msg = getString(R.string.msg_vpn_no_profile).replace(PLACEHOLDER_APPNAME, + APP_COMMON_NAME); + Utils.showMessage(msg, this); + toggleSettingsEnabled(false); + return; + } + Spinner spin = (Spinner) findViewById(R.id.spin_vpn_profile); + + ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, + android.R.layout.simple_spinner_dropdown_item, profiles){ + @Override + public View getView(int position, View convertView, android.view.ViewGroup parent) + { + return getStyledView(super.getView(position, convertView,parent)); + } + + private View getStyledView(View view) + { + TextView textView = (TextView)view.findViewById(android.R.id.text1); + textView.setGravity(Gravity.CENTER); + textView.setTextColor(R.color.ThemeLight); + return view; + } + + }; + adapter.insert(AccessPointInfo.DUMMY_VPN_PROFILE, 0); + spin.setAdapter(adapter); + + String pn = currentNetwork.getVpnProfileName(); + int pos = adapter.getPosition(pn); + if (pos < 0) { + spin.setSelection(adapter.getPosition(AccessPointInfo.DUMMY_VPN_PROFILE)); + } else { + spin.setSelection(pos); + } + + } + @Override + protected void onVpnPermissionDenied(){ + } + + } |