aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/fil/libre/repwifiapp/activities/VpnSettingsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/fil/libre/repwifiapp/activities/VpnSettingsActivity.java')
-rw-r--r--app/src/fil/libre/repwifiapp/activities/VpnSettingsActivity.java227
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(){
+ }
+
+
}