summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java35
1 files changed, 15 insertions, 20 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java
index 904aa31d..1b40c94c 100644
--- a/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java
@@ -47,6 +47,7 @@ public class EipServiceFragment extends Fragment implements Observer {
private static Activity parent_activity;
private static EIPReceiver mEIPReceiver;
private static EipStatus eip_status;
+ private boolean is_starting_to_connect;
@Override
public void onAttach(Activity activity) {
@@ -139,7 +140,7 @@ public class EipServiceFragment extends Fragment implements Observer {
private boolean canStartEIP() {
boolean certificateExists = !Dashboard.preferences.getString(Constants.CERTIFICATE, "").isEmpty();
boolean isAllowedAnon = Dashboard.preferences.getBoolean(Constants.ALLOWED_ANON, false);
- return (isAllowedAnon || certificateExists) && !eip_status.isConnected();
+ return (isAllowedAnon || certificateExists) && !eip_status.isConnected() && !eip_status.isConnecting();
}
private boolean canLogInToStartEIP() {
@@ -178,6 +179,7 @@ public class EipServiceFragment extends Fragment implements Observer {
}
public void startEipFromScratch() {
+ is_starting_to_connect = true;
progress_bar.setVisibility(View.VISIBLE);
eip_switch.setVisibility(View.VISIBLE);
String status = parent_activity.getString(R.string.eip_status_start_pending);
@@ -230,18 +232,19 @@ public class EipServiceFragment extends Fragment implements Observer {
Log.d(TAG, "handleNewState: " + eip_status.toString());
if(eip_status.wantsToDisconnect())
setDisconnectedUI();
+ else if(eip_status.isConnecting() || is_starting_to_connect)
+ setInProgressUI(eip_status);
else if (eip_status.isConnected())
setConnectedUI();
else if (eip_status.isDisconnected() && !eip_status.isConnecting())
setDisconnectedUI();
- else
- setInProgressUI(eip_status);
}
private void setConnectedUI() {
hideProgressBar();
Log.d(TAG, "setConnectedUi? " + eip_status.isConnected());
adjustSwitch();
+ is_starting_to_connect = false;
status_message.setText(parent_activity.getString(R.string.eip_state_connected));
}
@@ -252,14 +255,14 @@ public class EipServiceFragment extends Fragment implements Observer {
}
private void adjustSwitch() {
- if(eip_status.isConnected() || eip_status.isConnecting()) {
- Log.d(TAG, "adjustSwitch, isConnected || isConnecting, is checked? " + eip_switch.isChecked());
+ if(eip_status.isConnected() || eip_status.isConnecting() || is_starting_to_connect) {
+ Log.d(TAG, "adjustSwitch, isConnected || isConnecting, is checked");
if(!eip_switch.isChecked()) {
eip_switch.setChecked(true);
}
} else {
Log.d(TAG, "adjustSwitch, !isConnected && !isConnecting? " + eip_status.toString());
-
+
if(eip_switch.isChecked()) {
eip_switch.setChecked(false);
}
@@ -272,22 +275,17 @@ public class EipServiceFragment extends Fragment implements Observer {
String prefix = parent_activity.getString(localizedResId);
status_message.setText(prefix + " " + logmessage);
+ is_starting_to_connect = false;
adjustSwitch();
}
- protected void setStatusMessage(String status) {
- if(status_message == null)
- status_message = (TextView) parent_activity.findViewById(R.id.status_message);
- status_message.setText(status);
- }
-
private void hideProgressBar() {
if(progress_bar != null)
progress_bar.setVisibility(View.GONE);
}
protected class EIPReceiver extends ResultReceiver {
-
+
protected EIPReceiver(Handler handler){
super(handler);
}
@@ -295,17 +293,14 @@ public class EipServiceFragment extends Fragment implements Observer {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
-
+
String request = resultData.getString(Constants.REQUEST_TAG);
if (request.equals(Constants.ACTION_START_EIP)) {
switch (resultCode){
case Activity.RESULT_OK:
- Log.d(TAG, "Action start eip = Result OK");
- progress_bar.setVisibility(View.VISIBLE);
break;
case Activity.RESULT_CANCELED:
- progress_bar.setVisibility(View.GONE);
break;
}
} else if (request.equals(Constants.ACTION_STOP_EIP)) {
@@ -336,13 +331,13 @@ public class EipServiceFragment extends Fragment implements Observer {
status_message.setText(getString(R.string.updating_certificate_message));
if(LeapSRPSession.getToken().isEmpty() && !Dashboard.preferences.getBoolean(Constants.ALLOWED_ANON, false)) {
dashboard.logInDialog(Bundle.EMPTY);
- } else {
+ } else {
Intent provider_API_command = new Intent(parent_activity, ProviderAPI.class);
if(dashboard.providerAPI_result_receiver == null) {
dashboard.providerAPI_result_receiver = new ProviderAPIResultReceiver(new Handler());
dashboard.providerAPI_result_receiver.setReceiver(dashboard);
}
-
+
provider_API_command.setAction(ProviderAPI.DOWNLOAD_CERTIFICATE);
provider_API_command.putExtra(ProviderAPI.RECEIVER_KEY, dashboard.providerAPI_result_receiver);
parent_activity.startService(provider_API_command);
@@ -352,7 +347,7 @@ public class EipServiceFragment extends Fragment implements Observer {
}
}
}
-
+
public static EIPReceiver getReceiver() {
return mEIPReceiver;