diff --git a/client/src/main/java/ctbrec/ui/Player.java b/client/src/main/java/ctbrec/ui/Player.java index bace7e78..87a9e6b2 100644 --- a/client/src/main/java/ctbrec/ui/Player.java +++ b/client/src/main/java/ctbrec/ui/Player.java @@ -24,6 +24,10 @@ public class Player { private static PlayerThread playerThread; public static boolean play(String url) { + return play(url, true); + } + + public static boolean play(String url, boolean async) { boolean singlePlayer = Config.getInstance().getSettings().singlePlayer; try { if (singlePlayer && playerThread != null && playerThread.isRunning()) { @@ -31,6 +35,9 @@ public class Player { } playerThread = new PlayerThread(url); + if(!async) { + playerThread.join(); + } return true; } catch (Exception e1) { LOG.error("Couldn't start player", e1); @@ -54,6 +61,10 @@ public class Player { } public static boolean play(Model model) { + return play(model, true); + } + + public static boolean play(Model model, boolean async) { try { if(model.isOnline(true)) { boolean singlePlayer = Config.getInstance().getSettings().singlePlayer; diff --git a/client/src/main/java/ctbrec/ui/SiteUI.java b/client/src/main/java/ctbrec/ui/SiteUI.java index 865b1b53..076ba0ae 100644 --- a/client/src/main/java/ctbrec/ui/SiteUI.java +++ b/client/src/main/java/ctbrec/ui/SiteUI.java @@ -2,6 +2,7 @@ package ctbrec.ui; import java.io.IOException; +import ctbrec.Model; import ctbrec.sites.ConfigUI; public interface SiteUI { @@ -9,4 +10,5 @@ public interface SiteUI { public TabProvider getTabProvider(); public ConfigUI getConfigUI(); public boolean login() throws IOException; + public boolean play(Model model); } diff --git a/client/src/main/java/ctbrec/ui/SiteUiFactory.java b/client/src/main/java/ctbrec/ui/SiteUiFactory.java index aa2b5edd..1a7ce137 100644 --- a/client/src/main/java/ctbrec/ui/SiteUiFactory.java +++ b/client/src/main/java/ctbrec/ui/SiteUiFactory.java @@ -13,7 +13,7 @@ import ctbrec.ui.sites.bonga.BongaCamsSiteUi; import ctbrec.ui.sites.cam4.Cam4SiteUi; import ctbrec.ui.sites.camsoda.CamsodaSiteUi; import ctbrec.ui.sites.chaturbate.ChaturbateSiteUi; -import ctbrec.ui.sites.fc2live.Fc2LiveUi; +import ctbrec.ui.sites.fc2live.Fc2LiveSiteUi; import ctbrec.ui.sites.jasmin.LiveJasminSiteUi; import ctbrec.ui.sites.myfreecams.MyFreeCamsSiteUi; import ctbrec.ui.sites.streamate.StreamateSiteUi; @@ -24,7 +24,7 @@ public class SiteUiFactory { private static Cam4SiteUi cam4SiteUi; private static CamsodaSiteUi camsodaSiteUi; private static ChaturbateSiteUi ctbSiteUi; - private static Fc2LiveUi fc2SiteUi; + private static Fc2LiveSiteUi fc2SiteUi; private static LiveJasminSiteUi jasminSiteUi; private static MyFreeCamsSiteUi mfcSiteUi; private static StreamateSiteUi streamateSiteUi; @@ -52,7 +52,7 @@ public class SiteUiFactory { return ctbSiteUi; } else if (site instanceof Fc2Live) { if (fc2SiteUi == null) { - fc2SiteUi = new Fc2LiveUi((Fc2Live) site); + fc2SiteUi = new Fc2LiveSiteUi((Fc2Live) site); } return fc2SiteUi; } else if (site instanceof MyFreeCams) { diff --git a/client/src/main/java/ctbrec/ui/action/PlayAction.java b/client/src/main/java/ctbrec/ui/action/PlayAction.java index 06f9cc6b..a667a04e 100644 --- a/client/src/main/java/ctbrec/ui/action/PlayAction.java +++ b/client/src/main/java/ctbrec/ui/action/PlayAction.java @@ -2,7 +2,8 @@ package ctbrec.ui.action; import ctbrec.Config; import ctbrec.Model; -import ctbrec.ui.Player; +import ctbrec.ui.SiteUI; +import ctbrec.ui.SiteUiFactory; import ctbrec.ui.controls.Toast; import javafx.application.Platform; import javafx.scene.Cursor; @@ -21,7 +22,8 @@ public class PlayAction { public void execute() { source.setCursor(Cursor.WAIT); new Thread(() -> { - boolean started = Player.play(selectedModel); + SiteUI siteUI = SiteUiFactory.getUi(selectedModel.getSite()); + boolean started = siteUI.play(selectedModel); Platform.runLater(() -> { if (started && Config.getInstance().getSettings().showPlayerStarting) { Toast.makeText(source.getScene(), "Starting Player", 2000, 500, 500); diff --git a/client/src/main/java/ctbrec/ui/sites/AbstractSiteUi.java b/client/src/main/java/ctbrec/ui/sites/AbstractSiteUi.java new file mode 100644 index 00000000..fb5cbfea --- /dev/null +++ b/client/src/main/java/ctbrec/ui/sites/AbstractSiteUi.java @@ -0,0 +1,12 @@ +package ctbrec.ui.sites; + +import ctbrec.Model; +import ctbrec.ui.Player; +import ctbrec.ui.SiteUI; + +public abstract class AbstractSiteUi implements SiteUI { + @Override + public boolean play(Model model) { + return Player.play(model); + } +} diff --git a/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsSiteUi.java b/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsSiteUi.java index d5453670..928c2df7 100644 --- a/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsSiteUi.java +++ b/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsSiteUi.java @@ -10,11 +10,11 @@ import org.slf4j.LoggerFactory; import ctbrec.sites.ConfigUI; import ctbrec.sites.bonga.BongaCams; import ctbrec.sites.bonga.BongaCamsHttpClient; -import ctbrec.ui.SiteUI; import ctbrec.ui.TabProvider; import ctbrec.ui.controls.Dialogs; +import ctbrec.ui.sites.AbstractSiteUi; -public class BongaCamsSiteUi implements SiteUI { +public class BongaCamsSiteUi extends AbstractSiteUi { private static final transient Logger LOG = LoggerFactory.getLogger(BongaCamsSiteUi.class); private BongaCamsTabProvider tabProvider; diff --git a/client/src/main/java/ctbrec/ui/sites/cam4/Cam4SiteUi.java b/client/src/main/java/ctbrec/ui/sites/cam4/Cam4SiteUi.java index 3d56eec3..202937f3 100644 --- a/client/src/main/java/ctbrec/ui/sites/cam4/Cam4SiteUi.java +++ b/client/src/main/java/ctbrec/ui/sites/cam4/Cam4SiteUi.java @@ -10,12 +10,12 @@ import org.slf4j.LoggerFactory; import ctbrec.sites.ConfigUI; import ctbrec.sites.cam4.Cam4; import ctbrec.sites.cam4.Cam4HttpClient; -import ctbrec.ui.SiteUI; import ctbrec.ui.TabProvider; import ctbrec.ui.controls.Dialogs; +import ctbrec.ui.sites.AbstractSiteUi; import javafx.application.Platform; -public class Cam4SiteUi implements SiteUI { +public class Cam4SiteUi extends AbstractSiteUi { private static final transient Logger LOG = LoggerFactory.getLogger(Cam4SiteUi.class); private Cam4TabProvider tabProvider; diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaSiteUi.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaSiteUi.java index 2b2a2eb7..5bb5a62c 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaSiteUi.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaSiteUi.java @@ -7,10 +7,10 @@ import org.slf4j.LoggerFactory; import ctbrec.sites.ConfigUI; import ctbrec.sites.camsoda.Camsoda; -import ctbrec.ui.SiteUI; import ctbrec.ui.TabProvider; +import ctbrec.ui.sites.AbstractSiteUi; -public class CamsodaSiteUi implements SiteUI { +public class CamsodaSiteUi extends AbstractSiteUi { private static final transient Logger LOG = LoggerFactory.getLogger(CamsodaSiteUi.class); diff --git a/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateSiteUi.java b/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateSiteUi.java index 575ca10f..3d01af09 100644 --- a/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateSiteUi.java +++ b/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateSiteUi.java @@ -4,10 +4,10 @@ import java.io.IOException; import ctbrec.sites.ConfigUI; import ctbrec.sites.chaturbate.Chaturbate; -import ctbrec.ui.SiteUI; import ctbrec.ui.TabProvider; +import ctbrec.ui.sites.AbstractSiteUi; -public class ChaturbateSiteUi implements SiteUI { +public class ChaturbateSiteUi extends AbstractSiteUi { private ChaturbateTabProvider tabProvider; private ChaturbateConfigUi configUi; diff --git a/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2LiveUi.java b/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2LiveSiteUi.java similarity index 58% rename from client/src/main/java/ctbrec/ui/sites/fc2live/Fc2LiveUi.java rename to client/src/main/java/ctbrec/ui/sites/fc2live/Fc2LiveSiteUi.java index bc7a61f2..a2976969 100644 --- a/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2LiveUi.java +++ b/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2LiveSiteUi.java @@ -2,17 +2,19 @@ package ctbrec.ui.sites.fc2live; import java.io.IOException; +import ctbrec.Model; import ctbrec.sites.ConfigUI; import ctbrec.sites.fc2live.Fc2Live; -import ctbrec.ui.SiteUI; +import ctbrec.ui.Player; import ctbrec.ui.TabProvider; +import ctbrec.ui.sites.AbstractSiteUi; -public class Fc2LiveUi implements SiteUI { +public class Fc2LiveSiteUi extends AbstractSiteUi { private Fc2Live fc2live; private Fc2TabProvider tabProvider; - public Fc2LiveUi(Fc2Live fc2live) { + public Fc2LiveSiteUi(Fc2Live fc2live) { this.fc2live = fc2live; this.tabProvider = new Fc2TabProvider(fc2live); } @@ -32,4 +34,15 @@ public class Fc2LiveUi implements SiteUI { return false; } + @Override + public boolean play(Model model) { + new Thread(() -> { + // create websocket + + Player.play(model, false); + + // close websocket + }).start(); + return true; + } } diff --git a/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminSiteUi.java b/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminSiteUi.java index e017e4aa..1c6a96b1 100644 --- a/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminSiteUi.java +++ b/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminSiteUi.java @@ -11,11 +11,11 @@ import org.slf4j.LoggerFactory; import ctbrec.sites.ConfigUI; import ctbrec.sites.jasmin.LiveJasmin; import ctbrec.sites.jasmin.LiveJasminHttpClient; -import ctbrec.ui.SiteUI; import ctbrec.ui.TabProvider; import ctbrec.ui.controls.Dialogs; +import ctbrec.ui.sites.AbstractSiteUi; -public class LiveJasminSiteUi implements SiteUI { +public class LiveJasminSiteUi extends AbstractSiteUi { private static final transient Logger LOG = LoggerFactory.getLogger(LiveJasminSiteUi.class); private LiveJasmin liveJasmin; diff --git a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsSiteUi.java b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsSiteUi.java index 59bb5829..fcf95111 100644 --- a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsSiteUi.java +++ b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsSiteUi.java @@ -4,10 +4,10 @@ import java.io.IOException; import ctbrec.sites.ConfigUI; import ctbrec.sites.mfc.MyFreeCams; -import ctbrec.ui.SiteUI; import ctbrec.ui.TabProvider; +import ctbrec.ui.sites.AbstractSiteUi; -public class MyFreeCamsSiteUi implements SiteUI { +public class MyFreeCamsSiteUi extends AbstractSiteUi { private MyFreeCamsTabProvider tabProvider; private MyFreeCamsConfigUI configUi; diff --git a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateSiteUi.java b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateSiteUi.java index c7348a1f..465246c4 100644 --- a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateSiteUi.java +++ b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateSiteUi.java @@ -4,10 +4,10 @@ import java.io.IOException; import ctbrec.sites.ConfigUI; import ctbrec.sites.streamate.Streamate; -import ctbrec.ui.SiteUI; import ctbrec.ui.TabProvider; +import ctbrec.ui.sites.AbstractSiteUi; -public class StreamateSiteUi implements SiteUI { +public class StreamateSiteUi extends AbstractSiteUi { private StreamateTabProvider tabProvider; private StreamateConfigUI configUi;