diff --git a/forge-gui-mobile/src/forge/screens/online/OnlineLobbyScreen.java b/forge-gui-mobile/src/forge/screens/online/OnlineLobbyScreen.java index 0570d46fd73..b6f815b7566 100644 --- a/forge-gui-mobile/src/forge/screens/online/OnlineLobbyScreen.java +++ b/forge-gui-mobile/src/forge/screens/online/OnlineLobbyScreen.java @@ -1,11 +1,17 @@ package forge.screens.online; +import forge.FThreads; +import forge.Forge; import forge.interfaces.ILobbyView; import forge.match.GameLobby; +import forge.net.IOnlineChatInterface; import forge.net.IOnlineLobby; +import forge.net.NetConnectUtil; import forge.net.OfflineLobby; import forge.net.client.FGameClient; +import forge.screens.LoadingOverlay; import forge.screens.constructed.LobbyScreen; +import forge.screens.online.OnlineMenu.OnlineScreen; public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby { public OnlineLobbyScreen() { @@ -23,4 +29,43 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby { // TODO Auto-generated method stub } + + @Override + public void onActivate() { + if (getLobby() instanceof OfflineLobby) { + //prompt to connect to server when offline lobby activated + FThreads.invokeInBackgroundThread(new Runnable() { + @Override + public void run() { + final String url = NetConnectUtil.getServerUrl(); + FThreads.invokeInEdtLater(new Runnable() { + @Override + public void run() { + if (url == null) { + Forge.back(); //go back to previous screen if user cancels connection + return; + } + + final boolean joinServer = url.length() > 0; + final String caption = joinServer ? "Starting server..." : "Connecting to server..."; + LoadingOverlay.show(caption, new Runnable() { + @Override + public void run() { + final String result; + final IOnlineChatInterface chatInterface = (IOnlineChatInterface)OnlineScreen.Chat.getScreen(); + if (joinServer) { + result = NetConnectUtil.join(url, OnlineLobbyScreen.this, chatInterface); + } + else { + result = NetConnectUtil.host(OnlineLobbyScreen.this, chatInterface); + } + chatInterface.addMessage(result); + } + }); + } + }); + } + }); + } + } } diff --git a/forge-gui-mobile/src/forge/screens/online/OnlineMenu.java b/forge-gui-mobile/src/forge/screens/online/OnlineMenu.java index 3ac4595c66d..978af1a5fcb 100644 --- a/forge-gui-mobile/src/forge/screens/online/OnlineMenu.java +++ b/forge-gui-mobile/src/forge/screens/online/OnlineMenu.java @@ -55,6 +55,11 @@ public class OnlineMenu extends FPopupMenu { initializeScreen(); Forge.setBackScreen(screen); } + + public FScreen getScreen() { + initializeScreen(); + return screen; + } } private static final ForgePreferences prefs = FModel.getPreferences();