diff --git a/client/src/main/java/ctbrec/ui/sites/cam4/Cam4ConfigUI.java b/client/src/main/java/ctbrec/ui/sites/cam4/Cam4ConfigUI.java index 02dfed60..455e38b9 100644 --- a/client/src/main/java/ctbrec/ui/sites/cam4/Cam4ConfigUI.java +++ b/client/src/main/java/ctbrec/ui/sites/cam4/Cam4ConfigUI.java @@ -1,5 +1,8 @@ package ctbrec.ui.sites.cam4; +import java.util.ArrayList; +import java.util.List; + import ctbrec.Config; import ctbrec.sites.cam4.Cam4; import ctbrec.ui.DesktopIntegration; @@ -72,6 +75,53 @@ public class Cam4ConfigUI extends AbstractConfigUI { GridPane.setColumnSpan(password, 2); layout.add(password, 1, row++); + Label tabsLabel = new Label("Tabs"); + layout.add(tabsLabel, 0, row); + List tabs = getEnabledTabs(); + + GridPane checkboxGrid = new GridPane(); + checkboxGrid.setHgap(10); + checkboxGrid.setVgap(5); + checkboxGrid.setPadding(new Insets(0, 0, 0, 7)); + + CheckBox female = new CheckBox("Female"); + female.setSelected(tabs.contains("female")); + female.setOnAction(e -> toggleTab("female", female.isSelected())); + checkboxGrid.add(female, 0, 0); + + CheckBox male = new CheckBox("Male"); + male.setSelected(tabs.contains("male")); + male.setOnAction(e -> toggleTab("male", male.isSelected())); + checkboxGrid.add(male, 1, 0); + + CheckBox couples = new CheckBox("Couples"); + couples.setSelected(tabs.contains("couples")); + couples.setOnAction(e -> toggleTab("couples", couples.isSelected())); + checkboxGrid.add(couples, 2, 0); + + CheckBox trans = new CheckBox("Trans"); + trans.setSelected(tabs.contains("shemale")); + trans.setOnAction(e -> toggleTab("shemale", trans.isSelected())); + checkboxGrid.add(trans, 3, 0); + + CheckBox newModels = new CheckBox("New"); + newModels.setSelected(tabs.contains("new")); + newModels.setOnAction(e -> toggleTab("new", newModels.isSelected())); + checkboxGrid.add(newModels, 0, 1); + + CheckBox hdModels = new CheckBox("HD"); + hdModels.setSelected(tabs.contains("hd")); + hdModels.setOnAction(e -> toggleTab("hd", hdModels.isSelected())); + checkboxGrid.add(hdModels, 1, 1); + + CheckBox mobile = new CheckBox("Mobile"); + mobile.setSelected(tabs.contains("mobile")); + mobile.setOnAction(e -> toggleTab("mobile", mobile.isSelected())); + checkboxGrid.add(mobile, 2, 1); + + layout.add(checkboxGrid, 1, row, 4, 2); + row += 2; + var createAccount = new Button("Create new Account"); createAccount.setOnAction(e -> DesktopIntegration.open(Cam4.AFFILIATE_LINK)); layout.add(createAccount, 1, row++); @@ -89,4 +139,18 @@ public class Cam4ConfigUI extends AbstractConfigUI { return layout; } + private void toggleTab(String tab, boolean selected) { + var settings = Config.getInstance().getSettings(); + if (selected) { + settings.cam4Tabs.add(tab); + } else { + settings.cam4Tabs.remove(tab); + } + save(); + } + + private List getEnabledTabs() { + return new ArrayList<>(Config.getInstance().getSettings().cam4Tabs); + } + } diff --git a/client/src/main/java/ctbrec/ui/sites/cam4/Cam4TabProvider.java b/client/src/main/java/ctbrec/ui/sites/cam4/Cam4TabProvider.java index 11119733..3dcf855a 100644 --- a/client/src/main/java/ctbrec/ui/sites/cam4/Cam4TabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/cam4/Cam4TabProvider.java @@ -1,5 +1,6 @@ package ctbrec.ui.sites.cam4; +import ctbrec.Config; import ctbrec.sites.cam4.Cam4; import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; @@ -7,7 +8,9 @@ import javafx.scene.Scene; import javafx.scene.control.Tab; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class Cam4TabProvider extends AbstractTabProvider { @@ -21,13 +24,36 @@ public class Cam4TabProvider extends AbstractTabProvider { protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); - tabs.add(createTab("Female", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&gender=female")); - tabs.add(createTab("Male", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&gender=male")); - tabs.add(createTab("Trans", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&gender=shemale")); - tabs.add(createTab("Couples", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&broadcastType=male_group&broadcastType=female_group&broadcastType=male_female_group")); - tabs.add(createTab("HD", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=VIDEO_QUALITY&gender=female&broadcastType=female_group&broadcastType=solo&broadcastType=male_female_group&hd=true")); - tabs.add(createTab("Mobile", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&gender=female&broadcastType=female_group&broadcastType=solo&broadcastType=male_female_group&source=mobile")); - tabs.add(createTab("New", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&gender=female&broadcastType=female_group&broadcastType=solo&broadcastType=male_female_group&newPerformer=true")); + Map tabMap = new HashMap<>(); + tabMap.put("male", "Male"); + tabMap.put("female", "Female"); + tabMap.put("shemale", "Trans"); + tabMap.put("couples", "Couples"); + tabMap.put("hd", "HD"); + tabMap.put("mobile", "Mobile"); + List enabledTabs = getEnabledTabs(); + for (String tab : enabledTabs) { + String title = tabMap.getOrDefault(tab, tab); + switch (tab) { + case "female": + case "male": + case "shemale": + tabs.add(createTab(title, site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&gender=" + tab)); + break; + case "couples": + tabs.add(createTab("Couples", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&broadcastType=male_group&broadcastType=female_group&broadcastType=male_female_group")); + break; + case "hd": + tabs.add(createTab("HD", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=VIDEO_QUALITY&gender=female&broadcastType=female_group&broadcastType=solo&broadcastType=male_female_group&hd=true")); + break; + case "mobile": + tabs.add(createTab("Mobile", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&gender=female&broadcastType=female_group&broadcastType=solo&broadcastType=male_female_group&source=mobile")); + break; + case "new": + tabs.add(createTab("New", site.getBaseUrl() + "/directoryCams?directoryJson=true&online=true&url=true&orderBy=MOST_VIEWERS&gender=female&broadcastType=female_group&broadcastType=solo&broadcastType=male_female_group&newPerformer=true")); + default: + } + } followed = new Cam4FollowedTab((Cam4) site); followed.setRecorder(recorder); @@ -49,4 +75,8 @@ public class Cam4TabProvider extends AbstractTabProvider { return tab; } + private List getEnabledTabs() { + return new ArrayList<>(Config.getInstance().getSettings().cam4Tabs); + } + }