aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/connectbot/service/TerminalManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/connectbot/service/TerminalManager.java')
-rw-r--r--app/src/main/java/org/connectbot/service/TerminalManager.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/app/src/main/java/org/connectbot/service/TerminalManager.java b/app/src/main/java/org/connectbot/service/TerminalManager.java
index a15dff0..5416ddb 100644
--- a/app/src/main/java/org/connectbot/service/TerminalManager.java
+++ b/app/src/main/java/org/connectbot/service/TerminalManager.java
@@ -81,6 +81,8 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
public BridgeDisconnectedListener disconnectListener = null;
+ private final ArrayList<OnHostStatusChangedListener> hostStatusChangedListeners = new ArrayList<>();
+
public Map<String, KeyHolder> loadedKeypairs = new HashMap<String, KeyHolder>();
public Resources res;
@@ -252,6 +254,8 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
// also update database with new connected time
touchHost(host);
+ notifyHostStatusChanged();
+
return bridge;
}
@@ -354,6 +358,8 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
disconnected.add(bridge.host);
}
+ notifyHostStatusChanged();
+
if (shouldHideRunningNotification) {
ConnectionNotifier.getInstance().hideRunningNotification(this);
}
@@ -719,4 +725,28 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
mPendingReconnect.clear();
}
}
+
+ /**
+ * Register a {@code listener} that wants to know when a host's status materially changes.
+ * @see #hostStatusChangedListeners
+ */
+ public void registerOnHostStatusChangedListener(OnHostStatusChangedListener listener) {
+ if (!hostStatusChangedListeners.contains(listener)) {
+ hostStatusChangedListeners.add(listener);
+ }
+ }
+
+ /**
+ * Unregister a {@code listener} that wants to know when a host's status materially changes.
+ * @see #hostStatusChangedListeners
+ */
+ public void unregisterOnHostStatusChangedListener(OnHostStatusChangedListener listener) {
+ hostStatusChangedListeners.remove(listener);
+ }
+
+ private void notifyHostStatusChanged() {
+ for (OnHostStatusChangedListener listener : hostStatusChangedListeners) {
+ listener.onHostStatusChanged();
+ }
+ }
}