package ctbrec.ui.sites.stripchat; import java.util.List; import ctbrec.Config; import ctbrec.sites.stripchat.Stripchat; import ctbrec.ui.DesktopIntegration; import ctbrec.ui.settings.SettingsTab; import ctbrec.ui.settings.Sites; import ctbrec.ui.settings.TabUtils; import ctbrec.ui.sites.AbstractConfigUI; import javafx.geometry.Insets; import javafx.scene.Parent; import javafx.scene.control.*; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; public class StripchatConfigUI extends AbstractConfigUI { private final Stripchat stripchat; private CheckBox vr; public StripchatConfigUI(Stripchat stripchat) { this.stripchat = stripchat; } @Override public Parent createConfigPanel() { GridPane layout = SettingsTab.createGridLayout(); var settings = Config.getInstance().getSettings(); var row = 0; var l = new Label("Active"); layout.add(l, 0, row); var enabled = new CheckBox(); enabled.setSelected(!settings.disabledSites.contains(stripchat.getName())); enabled.setOnAction(e -> { if (enabled.isSelected()) { settings.disabledSites.remove(stripchat.getName()); } else { settings.disabledSites.add(stripchat.getName()); } save(); }); GridPane.setMargin(enabled, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN)); layout.add(enabled, 1, row++); l = new Label("Site"); layout.add(l, 0, row); var toggleGroup = new ToggleGroup(); var optionA = new RadioButton("Stripchat"); var optionB = new RadioButton("xHamsterLive"); var optionC = new RadioButton("SuperchatLive"); // Set initial selections based on current configuration if (Config.getInstance().getSettings().stripchatUseXhamster && !Config.getInstance().getSettings().stripchatUseSuperchat) { optionB.setSelected(true); } else if (!Config.getInstance().getSettings().stripchatUseXhamster && Config.getInstance().getSettings().stripchatUseSuperchat) { optionC.setSelected(true); } else { optionA.setSelected(true); } optionA.setToggleGroup(toggleGroup); optionB.setToggleGroup(toggleGroup); optionC.setToggleGroup(toggleGroup); // Add listeners to update configuration settings optionA.selectedProperty().addListener((obs, oldV, newV) -> { Config.getInstance().getSettings().stripchatUseXhamster = false; Config.getInstance().getSettings().stripchatUseSuperchat = false; save(); }); optionB.selectedProperty().addListener((obs, oldV, newV) -> { Config.getInstance().getSettings().stripchatUseXhamster = true; Config.getInstance().getSettings().stripchatUseSuperchat = false; save(); }); optionC.selectedProperty().addListener((obs, oldV, newV) -> { Config.getInstance().getSettings().stripchatUseXhamster = false; Config.getInstance().getSettings().stripchatUseSuperchat = true; save(); }); var hbox = new HBox(); hbox.getChildren().addAll(optionA, optionB, optionC); HBox.setMargin(optionA, new Insets(5)); HBox.setMargin(optionB, new Insets(5)); HBox.setMargin(optionC, new Insets(5)); GridPane.setMargin(hbox, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN)); layout.add(hbox, 1, row++); layout.add(new Label("Stripchat User"), 0, row); var username = new TextField(Config.getInstance().getSettings().stripchatUsername); username.textProperty().addListener((ob, o, n) -> { if (!n.equals(Config.getInstance().getSettings().stripchatUsername)) { Config.getInstance().getSettings().stripchatUsername = username.getText(); stripchat.getHttpClient().logout(); save(); } }); GridPane.setFillWidth(username, true); GridPane.setHgrow(username, Priority.ALWAYS); GridPane.setColumnSpan(username, 2); layout.add(username, 1, row++); layout.add(new Label("Stripchat Password"), 0, row); var password = new PasswordField(); password.setText(Config.getInstance().getSettings().stripchatPassword); password.textProperty().addListener((ob, o, n) -> { if (!n.equals(Config.getInstance().getSettings().stripchatPassword)) { Config.getInstance().getSettings().stripchatPassword = password.getText(); stripchat.getHttpClient().logout(); save(); } }); GridPane.setFillWidth(password, true); GridPane.setHgrow(password, Priority.ALWAYS); GridPane.setColumnSpan(password, 2); layout.add(password, 1, row++); Label tabsLabel = new Label("Tabs"); layout.add(tabsLabel, 0, row); List tabs = TabUtils.getEnabledTabs(Sites.STRIPCHAT); GridPane checkboxGrid = new GridPane(); checkboxGrid.setHgap(10); checkboxGrid.setVgap(5); checkboxGrid.setPadding(new Insets(0, 0, 0, 7)); CheckBox girls = new CheckBox("Girls"); girls.setSelected(tabs.contains("girls")); girls.setOnAction(e -> TabUtils.toggleTab(Sites.STRIPCHAT, "girls", girls.isSelected())); checkboxGrid.add(girls, 0, 0); CheckBox girlsNew = new CheckBox("Girls New"); girlsNew.setSelected(tabs.contains("autoTagNew")); girlsNew.setOnAction(e -> TabUtils.toggleTab(Sites.STRIPCHAT, "autoTagNew", girlsNew.isSelected())); checkboxGrid.add(girlsNew, 1, 0); CheckBox girlsHD = new CheckBox("Girls HD"); girlsHD.setSelected(tabs.contains("autoTagHd")); girlsHD.setOnAction(e -> TabUtils.toggleTab(Sites.STRIPCHAT, "autoTagHd", girlsHD.isSelected())); checkboxGrid.add(girlsHD, 2, 0); CheckBox girlsVR = new CheckBox("Girls VR"); girlsVR.setSelected(tabs.contains("autoTagVr")); girlsVR.setOnAction(e -> { TabUtils.toggleTab(Sites.STRIPCHAT, "autoTagVr", girlsVR.isSelected()); settings.stripchatVR = girlsVR.isSelected(); vr.setSelected(girlsVR.isSelected()); save(); }); checkboxGrid.add(girlsVR, 3, 0); CheckBox mobile = new CheckBox("Mobile"); mobile.setSelected(tabs.contains("mobile")); mobile.setOnAction(e -> TabUtils.toggleTab(Sites.STRIPCHAT, "mobile", mobile.isSelected())); checkboxGrid.add(mobile, 4, 0); CheckBox pvt = new CheckBox("Private"); pvt.setSelected(tabs.contains("autoTagSpy")); pvt.setOnAction(e -> TabUtils.toggleTab(Sites.STRIPCHAT, "autoTagSpy", pvt.isSelected())); checkboxGrid.add(pvt, 0, 1); CheckBox couples = new CheckBox("Couples"); couples.setSelected(tabs.contains("couples")); couples.setOnAction(e -> TabUtils.toggleTab(Sites.STRIPCHAT, "couples", couples.isSelected())); checkboxGrid.add(couples, 1, 1); CheckBox boys = new CheckBox("Boys"); boys.setSelected(tabs.contains("men")); boys.setOnAction(e -> TabUtils.toggleTab(Sites.STRIPCHAT, "men", boys.isSelected())); checkboxGrid.add(boys, 2, 1); CheckBox trans = new CheckBox("Trans"); trans.setSelected(tabs.contains("trans")); trans.setOnAction(e -> TabUtils.toggleTab(Sites.STRIPCHAT, "trans", trans.isSelected())); checkboxGrid.add(trans, 3, 1); layout.add(checkboxGrid, 1, row, 5, 2); row += 2; l = new Label("Get VR stream if available"); layout.add(l, 0, row); vr = new CheckBox(); vr.setSelected(settings.stripchatVR); vr.setOnAction(e -> { settings.stripchatVR = vr.isSelected(); save(); }); GridPane.setMargin(vr, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN)); layout.add(vr, 1, row); row++; var createAccount = new Button("Create new Account"); createAccount.setOnAction(e -> DesktopIntegration.open(stripchat.getAffiliateLink())); layout.add(createAccount, 1, row++); GridPane.setColumnSpan(createAccount, 2); var deleteCookies = new Button("Delete Cookies"); deleteCookies.setOnAction(e -> stripchat.getHttpClient().clearCookies()); layout.add(deleteCookies, 1, row++); GridPane.setColumnSpan(deleteCookies, 2); GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN)); GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN)); GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN)); GridPane.setMargin(deleteCookies, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN)); return layout; } }