summaryrefslogtreecommitdiff
path: root/src/se/leap/leapclient/Dashboard.java
diff options
context:
space:
mode:
authorSean Leonard <meanderingcode@aetherislands.net>2013-07-10 18:26:31 -0600
committerSean Leonard <meanderingcode@aetherislands.net>2013-07-19 15:10:47 -0600
commitf9131ce775b180cee3fa8ec1ac52290a7f58d1ef (patch)
tree172d704367c6d74b6d99bb251abe4c3e40c19a24 /src/se/leap/leapclient/Dashboard.java
parent437183f283e61da878aded001fb78e8e62aa9da6 (diff)
Refactor EIP UI and control logic out of Dashboard into a Fragment
Diffstat (limited to 'src/se/leap/leapclient/Dashboard.java')
-rw-r--r--src/se/leap/leapclient/Dashboard.java241
1 files changed, 10 insertions, 231 deletions
diff --git a/src/se/leap/leapclient/Dashboard.java b/src/se/leap/leapclient/Dashboard.java
index ebce35ed..4cd517a9 100644
--- a/src/se/leap/leapclient/Dashboard.java
+++ b/src/se/leap/leapclient/Dashboard.java
@@ -6,14 +6,12 @@ import org.json.JSONException;
import org.json.JSONObject;
import se.leap.leapclient.ProviderAPIResultReceiver.Receiver;
-import se.leap.openvpn.LogWindow;
import se.leap.openvpn.MainActivity;
-import se.leap.openvpn.OpenVPN;
-import se.leap.openvpn.OpenVPN.StateListener;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DialogFragment;
import android.app.Fragment;
+import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.Context;
@@ -22,15 +20,10 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
-import android.os.ResultReceiver;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.view.ViewStub;
-import android.widget.CompoundButton;
-import android.widget.RelativeLayout;
-import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
@@ -40,26 +33,23 @@ import android.widget.Toast;
*
* @author Sean Leonard <meanderingcode@aetherislands.net>
*/
-public class Dashboard extends Activity implements LogInDialog.LogInDialogInterface,Receiver,StateListener {
+public class Dashboard extends Activity implements LogInDialog.LogInDialogInterface,Receiver {
protected static final int CONFIGURE_LEAP = 0;
+ private static final String TAG_EIP_FRAGMENT = "EIP_DASHBOARD_FRAGMENT";
+
private ProgressDialog mProgressDialog;
+
private static Context app;
private static SharedPreferences preferences;
private static Provider provider;
private TextView providerNameTV;
- private TextView eipTypeTV;
- private Switch eipSwitch;
- private View eipDetail;
- private TextView eipStatus;
-
- private boolean mEipStartPending = false;
+
private boolean authed = false;
public ProviderAPIResultReceiver providerAPI_result_receiver;
- private EIPReceiver mEIPReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -77,23 +67,6 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
else
buildDashboard();
}
-
- @Override
- protected void onStop() {
- super.onStop();
- if (provider != null)
- if (provider.hasEIP() && provider.getEIPType() == "OpenVPN")
- OpenVPN.removeStateListener(this);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- if (provider != null)
- if (provider.hasEIP() && provider.getEIPType() == "OpenVPN")
- OpenVPN.addStateListener(this);
- }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
@@ -150,111 +123,13 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
providerNameTV.setText(provider.getName());
providerNameTV.setTextSize(28);
- if ( provider.hasEIP() ){
- startService( new Intent(EIP.ACTION_UPDATE_EIP_SERVICE) );
- if (provider.getEIPType() == "OpenVPN")
- OpenVPN.addStateListener(this);
- serviceItemEIP();
+ FragmentManager fragMan = getFragmentManager();
+ if ( provider.hasEIP() && fragMan.findFragmentByTag(TAG_EIP_FRAGMENT) == null){
+ EipServiceFragment eipFragment = new EipServiceFragment();
+ fragMan.beginTransaction().add(R.id.servicesCollection, eipFragment, TAG_EIP_FRAGMENT).commit();
}
}
- /**
- * Builds the UI for the EIP service Dashboard component
- */
- private void serviceItemEIP() {
- mEIPReceiver = new EIPReceiver(new Handler());
- mEIPReceiver.setReceiver(this);
-
- Intent intent = new Intent(this,EIP.class);
- intent.setAction(EIP.ACTION_IS_EIP_RUNNING);
- intent.putExtra(ConfigHelper.RECEIVER_TAG, mEIPReceiver);
- startService(intent);
-
- ViewStub eip_overview_stub = ((ViewStub) findViewById(R.id.eipOverviewStub));
- if(eip_overview_stub != null)
- eip_overview_stub.inflate();
-
- eipTypeTV = (TextView) findViewById(R.id.eipType);
- eipTypeTV.setText(provider.getEIPType());
-
- eipDetail = ((RelativeLayout) findViewById(R.id.eipDetail));
- View eipSettings = findViewById(R.id.eipSettings);
- eipSettings.setVisibility(View.GONE); // FIXME too!
- eipDetail.setVisibility(View.VISIBLE);
- eipStatus = (TextView) findViewById(R.id.eipStatus);
-
- eipSwitch = (Switch) findViewById(R.id.eipSwitch);
- eipSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-
- if (isChecked){
- mEipStartPending = true;
- eipCommand(EIP.ACTION_START_EIP);
- } else {
- if (mEipStartPending){
- AlertDialog.Builder alertBuilder = new AlertDialog.Builder(getAppContext());
- alertBuilder.setTitle(getResources().getString(R.string.eip_cancel_connect_title));
- alertBuilder
- .setMessage(getResources().getString(R.string.eip_cancel_connect_text))
- .setPositiveButton(getResources().getString(R.string.eip_cancel_connect_cancel), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- eipCommand(EIP.ACTION_STOP_EIP);
- }
- })
- .setNegativeButton(getResources().getString(R.string.eip_cancel_connect_false), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- eipSwitch.setChecked(true);
- }
- })
- .show();
- } else {
- eipCommand(EIP.ACTION_STOP_EIP);
- }
- }
- }
- });
- }
-
- /**
- * Send a command to EIP
- *
- * @param action A valid String constant from EIP class representing an Intent
- * filter for the EIP class
- */
- private void eipCommand(String action){
- // TODO validate "action"...how do we get the list of intent-filters for a class via Android API?
- Intent vpnIntent = new Intent(action);
- vpnIntent.putExtra(ConfigHelper.RECEIVER_TAG, mEIPReceiver);
- startService(vpnIntent);
- }
-
- /**
- * Expands the EIP Dashboard component for extra details view.
- * Called by onClick property in client_dashboard.xml layout.
- *
- * @param view (Unused) The View calling this method by its onClick property
- */
- public void toggleEipOverview(View view) {
- if (eipDetail.isShown())
- eipDetail.setVisibility(View.GONE);
- else
- eipDetail.setVisibility(View.VISIBLE);
- }
-
- /**
- * Launches the se.leap.openvpn.LogWindow Activity showing detailed OpenVPN log
- *
- * @param view (Unused) The View calling this method by its onClick property
- */
- public void showEIPLog(View view){
- Intent intent = new Intent(getBaseContext(),LogWindow.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
- startActivity(intent);
- }
-
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
JSONObject provider_json;
@@ -452,100 +327,4 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
return app;
}
- @Override
- public void updateState(final String state, final String logmessage, final int localizedResId) {
- // Note: "states" are not organized anywhere...collected state strings:
- // NOPROCESS,NONETWORK,BYTECOUNT,AUTH_FAILED + some parsing thing ( WAIT(?),AUTH,GET_CONFIG,ASSIGN_IP,CONNECTED,SIGINT )
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- if (eipStatus != null) {
- boolean switchState = true;
- String statusMessage = "";
- String prefix = getString(localizedResId);
- if (state.equals("CONNECTED")){
- statusMessage = "Connection Secure";
- mEipStartPending = false;
- } else if (state.equals("BYTECOUNT")) {
- statusMessage = logmessage;
- } else if (state.equals("NOPROCESS") || state.equals("EXITING")) {
- statusMessage = "Not running! Connection not secure!";
- switchState = false;
- } else {
- statusMessage = prefix + logmessage;
- }
-
- eipSwitch.setChecked(switchState);
- eipStatus.setText(statusMessage);
- }
- }
- });
- }
-
- /**
- * Inner class for handling messages related to EIP status and control requests
- *
- * @author Sean Leonard <meanderingcode@aetherislands.net>
- */
- protected class EIPReceiver extends ResultReceiver {
-
- Dashboard mDashboard;
-
- protected EIPReceiver(Handler handler){
- super(handler);
- }
-
- public void setReceiver(Dashboard receiver) {
- mDashboard = receiver;
- }
-
- @Override
- protected void onReceiveResult(int resultCode, Bundle resultData) {
- super.onReceiveResult(resultCode, resultData);
-
- String request = resultData.getString(ConfigHelper.REQUEST_TAG);
- boolean checked = false;
-
- if (request == EIP.ACTION_IS_EIP_RUNNING) {
- switch (resultCode){
- case RESULT_OK:
- checked = true;
- break;
- case RESULT_CANCELED:
- checked = false;
- break;
- }
- } else if (request == EIP.ACTION_START_EIP) {
- switch (resultCode){
- case RESULT_OK:
- checked = true;
- break;
- case RESULT_CANCELED:
- checked = false;
- break;
- }
- } else if (request == EIP.ACTION_STOP_EIP) {
- switch (resultCode){
- case RESULT_OK:
- checked = false;
- break;
- case RESULT_CANCELED:
- checked = true;
- break;
- }
- } else if (request == EIP.EIP_NOTIFICATION) {
- switch (resultCode){
- case RESULT_OK:
- checked = true;
- break;
- case RESULT_CANCELED:
- checked = false;
- break;
- }
- }
-
- eipSwitch.setChecked(checked);
- }
- }
}