From bc3af9b45a962721002e249806e0e9edd01e3e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 18 Nov 2014 18:38:06 +0100 Subject: Extracted EipStatus, centralizing new state notifications. Observer pattern. The only notification is being received properly on EipServiceFragment is the connected one. I need to fix the other UI methods. --- .../java/se/leap/bitmaskclient/eip/EipStatus.java | 133 +++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java (limited to 'app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java new file mode 100644 index 00000000..c58650ba --- /dev/null +++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java @@ -0,0 +1,133 @@ +/** + * Copyright (c) 2013 LEAP Encryption Access Project and contributers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package se.leap.bitmaskclient.eip; + +import android.util.Log; +import java.util.*; + +import de.blinkt.openvpn.core.*; + +public class EipStatus extends Observable implements VpnStatus.StateListener { + public static String TAG = EipStatus.class.getSimpleName(); + private static EipStatus current_status; + + private static EipStatus previous_status; + private static VpnStatus.ConnectionStatus level = VpnStatus.ConnectionStatus.LEVEL_NOTCONNECTED; + private static boolean wants_to_disconnect = false; + private static boolean is_disconnecting = false; + private static boolean is_connecting = false; + + private String state, log_message; + private int localized_res_id; + + public static EipStatus getInstance() { + if(current_status == null) { + current_status = new EipStatus(); + VpnStatus.addStateListener(current_status); + } + return current_status; + } + + private EipStatus() { } + + @Override + public void updateState(final String state, final String logmessage, final int localizedResId, final VpnStatus.ConnectionStatus level) { + current_status = getInstance(); + previous_status = current_status; + current_status.setState(state); + current_status.setLogMessage(logmessage); + current_status.setLocalizedResId(localizedResId); + current_status.setLevel(level); + current_status.setChanged(); + Log.d(TAG, "update state with level " + level); + current_status.notifyObservers(); + } + + public boolean isDisconnecting() { + return is_disconnecting; + } + + public boolean isConnecting() { + return is_connecting; + } + + public boolean wantsToDisconnect() { + return wants_to_disconnect; + } + + public boolean isConnected() { + return level == VpnStatus.ConnectionStatus.LEVEL_CONNECTED; + } + + public boolean isDisconnected() { + return level == VpnStatus.ConnectionStatus.LEVEL_NOTCONNECTED || level == VpnStatus.ConnectionStatus.LEVEL_AUTH_FAILED; + } + + public void setConnecting() { + is_connecting = true; + is_disconnecting = false; + wants_to_disconnect = false; + } + + public void setDisconnecting() { + is_disconnecting = true; + is_connecting = false; + wants_to_disconnect = false; + level = VpnStatus.ConnectionStatus.UNKNOWN_LEVEL; // Wait for the decision of the user + } + + public void setWantsToDisconnect() { + wants_to_disconnect = true; + } + + public String getState() { + return state; + } + + public String getLogMessage() { + return log_message; + } + + public int getLocalizedResId() { + return localized_res_id; + } + + public VpnStatus.ConnectionStatus getLevel() { + return level; + } + + public EipStatus getPreviousStatus() { + return previous_status; + } + + private void setState(String state) { + this.state = state; + } + + private void setLogMessage(String log_message) { + this.log_message = log_message; + } + + private void setLocalizedResId(int localized_res_id) { + this.localized_res_id = localized_res_id; + } + + private void setLevel(VpnStatus.ConnectionStatus level) { + this.level = level; + } + +} -- cgit v1.2.3 From 50949530a8453e1aa62c0ff277849d6f83fe0f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Wed, 19 Nov 2014 20:20:31 +0100 Subject: Eip status messages refactored. --- app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java index c58650ba..ee14f2db 100644 --- a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java +++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java @@ -53,6 +53,8 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { current_status.setLocalizedResId(localizedResId); current_status.setLevel(level); current_status.setChanged(); + if(isConnected() || isDisconnected()) + setConnectedOrDisconnected(); Log.d(TAG, "update state with level " + level); current_status.notifyObservers(); } @@ -74,7 +76,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { } public boolean isDisconnected() { - return level == VpnStatus.ConnectionStatus.LEVEL_NOTCONNECTED || level == VpnStatus.ConnectionStatus.LEVEL_AUTH_FAILED; + return level == VpnStatus.ConnectionStatus.LEVEL_NOTCONNECTED; } public void setConnecting() { @@ -83,11 +85,18 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { wants_to_disconnect = false; } + public void setConnectedOrDisconnected() { + is_connecting = false; + is_disconnecting = false; + wants_to_disconnect = false; + current_status.setChanged(); + current_status.notifyObservers(); + } + public void setDisconnecting() { is_disconnecting = true; is_connecting = false; wants_to_disconnect = false; - level = VpnStatus.ConnectionStatus.UNKNOWN_LEVEL; // Wait for the decision of the user } public void setWantsToDisconnect() { -- cgit v1.2.3 From e4d4c07be386f809a8ac028df8146916fc0f7597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Sat, 22 Nov 2014 00:10:46 +0100 Subject: EipStatus detects and notifies changes by itself. Initial status message is "not connected", rather than "unknown". --- .../java/se/leap/bitmaskclient/eip/EipStatus.java | 29 ++++++++++++++++------ 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java index ee14f2db..82c3ceb8 100644 --- a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java +++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java @@ -29,7 +29,6 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { private static VpnStatus.ConnectionStatus level = VpnStatus.ConnectionStatus.LEVEL_NOTCONNECTED; private static boolean wants_to_disconnect = false; private static boolean is_disconnecting = false; - private static boolean is_connecting = false; private String state, log_message; private int localized_res_id; @@ -55,6 +54,8 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { current_status.setChanged(); if(isConnected() || isDisconnected()) setConnectedOrDisconnected(); + else if(isConnecting()) + setConnecting(); Log.d(TAG, "update state with level " + level); current_status.notifyObservers(); } @@ -63,14 +64,17 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { return is_disconnecting; } - public boolean isConnecting() { - return is_connecting; - } - public boolean wantsToDisconnect() { return wants_to_disconnect; } + public boolean isConnecting() { + return + !isConnected() && + !isDisconnected() && + !isPaused(); + } + public boolean isConnected() { return level == VpnStatus.ConnectionStatus.LEVEL_CONNECTED; } @@ -79,14 +83,19 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { return level == VpnStatus.ConnectionStatus.LEVEL_NOTCONNECTED; } + public boolean isPaused() { + return level == VpnStatus.ConnectionStatus.LEVEL_VPNPAUSED; + } + public void setConnecting() { - is_connecting = true; is_disconnecting = false; wants_to_disconnect = false; + current_status.setChanged(); + current_status.notifyObservers(); } public void setConnectedOrDisconnected() { - is_connecting = false; + Log.d(TAG, "setConnectedOrDisconnected()"); is_disconnecting = false; wants_to_disconnect = false; current_status.setChanged(); @@ -95,7 +104,6 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { public void setDisconnecting() { is_disconnecting = true; - is_connecting = false; wants_to_disconnect = false; } @@ -139,4 +147,9 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { this.level = level; } + @Override + public String toString() { + return "State: " + state + " Level: " + level.toString(); + } + } -- cgit v1.2.3 From 2fc73d6bfe8d86464571258f008d8bcf6db0cc2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Thu, 27 Nov 2014 20:09:05 +0100 Subject: Removed unused imports and unused .eip variables --- .../java/se/leap/bitmaskclient/eip/EipStatus.java | 25 ++++------------------ 1 file changed, 4 insertions(+), 21 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java index 82c3ceb8..4ac3bd6a 100644 --- a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java +++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java @@ -17,18 +17,17 @@ package se.leap.bitmaskclient.eip; import android.util.Log; -import java.util.*; -import de.blinkt.openvpn.core.*; +import java.util.Observable; + +import de.blinkt.openvpn.core.VpnStatus; public class EipStatus extends Observable implements VpnStatus.StateListener { public static String TAG = EipStatus.class.getSimpleName(); private static EipStatus current_status; - private static EipStatus previous_status; private static VpnStatus.ConnectionStatus level = VpnStatus.ConnectionStatus.LEVEL_NOTCONNECTED; private static boolean wants_to_disconnect = false; - private static boolean is_disconnecting = false; private String state, log_message; private int localized_res_id; @@ -46,7 +45,6 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { @Override public void updateState(final String state, final String logmessage, final int localizedResId, final VpnStatus.ConnectionStatus level) { current_status = getInstance(); - previous_status = current_status; current_status.setState(state); current_status.setLogMessage(logmessage); current_status.setLocalizedResId(localizedResId); @@ -60,10 +58,6 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { current_status.notifyObservers(); } - public boolean isDisconnecting() { - return is_disconnecting; - } - public boolean wantsToDisconnect() { return wants_to_disconnect; } @@ -88,7 +82,6 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { } public void setConnecting() { - is_disconnecting = false; wants_to_disconnect = false; current_status.setChanged(); current_status.notifyObservers(); @@ -96,21 +89,15 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { public void setConnectedOrDisconnected() { Log.d(TAG, "setConnectedOrDisconnected()"); - is_disconnecting = false; wants_to_disconnect = false; current_status.setChanged(); current_status.notifyObservers(); } public void setDisconnecting() { - is_disconnecting = true; wants_to_disconnect = false; } - public void setWantsToDisconnect() { - wants_to_disconnect = true; - } - public String getState() { return state; } @@ -127,10 +114,6 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { return level; } - public EipStatus getPreviousStatus() { - return previous_status; - } - private void setState(String state) { this.state = state; } @@ -144,7 +127,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener { } private void setLevel(VpnStatus.ConnectionStatus level) { - this.level = level; + EipStatus.level = level; } @Override -- cgit v1.2.3