package de.tum.in.tumcampusapp.activities;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import java.io.InputStream;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import de.tum.in.tumcampusapp.R;
import de.tum.in.tumcampusapp.activities.generic.BaseActivity;
import de.tum.in.tumcampusapp.auxiliary.Const;
import de.tum.in.tumcampusapp.auxiliary.ImplicitCounter;
import de.tum.in.tumcampusapp.auxiliary.Utils;
import de.tum.in.tumcampusapp.managers.CardManager;
import de.tum.in.tumcampusapp.managers.EduroamManager;
/**
* Activity that allows the user to easily setup eduroam.
* Collects all the information needed.
*/
public class SetupEduroamActivity extends BaseActivity {
private EditText lrz;
private EditText password;
public SetupEduroamActivity() {
super(R.layout.activity_setup_eduroam);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ImplicitCounter.count(this);
setContentView(R.layout.activity_setup_eduroam);
// Enable 'More Info' links
((TextView) findViewById(R.id.text_with_link_1)).setMovementMethod(LinkMovementMethod.getInstance());
((TextView) findViewById(R.id.text_with_link_2)).setMovementMethod(LinkMovementMethod.getInstance());
if (Build.VERSION.SDK_INT >= 18) {
findViewById(R.id.certificate).setVisibility(View.GONE);
}
lrz = (EditText) findViewById(R.id.wifi_lrz_id);
lrz.setText(Utils.getSetting(this, Const.LRZ_ID, ""));
password = (EditText) findViewById(R.id.wifi_password);
password.requestFocus();
}
/**
* Start setting up the wifi connection
*
* @param v Setup button handle
*/
@SuppressWarnings("UnusedParameters")
public void onClickSetup(View v) {
EduroamManager manager = new EduroamManager(getApplicationContext());
boolean success = manager.configureEduroam(lrz.getText().toString(), password.getText().toString());
if (success) {
Utils.showToast(this, R.string.eduroam_success);
finish();
CardManager.setShouldRefresh();
} else {
((TextView) findViewById(R.id.pin_lock)).setTextColor(0xFFFF0000);
findViewById(R.id.pin_lock_rem).setVisibility(View.VISIBLE);
}
}
/**
* Prompts the user with an install certificate dialog.
* This is only needed for API level lower than 18.
* API 18 and above allow automatic installation of certificate
*
* @param v Certificate install button handle
*/
@SuppressWarnings("UnusedParameters")
public void onInstallCertificate(View v) {
Intent intent = new Intent("android.credentials.INSTALL");
intent.setClassName("com.android.certinstaller", "com.android.certinstaller.CertInstallerMain");
try {
InputStream is = getResources().openRawResource(R.raw.rootcert);
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(is);
intent.putExtra("name", "eduroam");
intent.putExtra("CERT", cert.getEncoded());
startActivityForResult(intent, 0);
} catch (Resources.NotFoundException | CertificateException e) {
Utils.log(e);
}
}
/**
* Open security settings
*
* @param v Security settings button handle
*/
@SuppressWarnings("UnusedParameters")
public void openSecuritySettings(View v) {
startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS));
}
/**
* Open android settings
*
* @param v Button handle
*/
@SuppressWarnings("UnusedParameters")
public void showDataBackupSettings(View v) {
startActivity(new Intent(Settings.ACTION_SETTINGS));
}
@SuppressWarnings("UnusedParameters")
public void onClickCancel(View v) {
finish();
}
}