Add optional tabs

This commit is contained in:
jafea7 2025-04-10 15:17:55 +10:00
parent 06bf0f98cd
commit 0a8230f2b2
25 changed files with 144 additions and 60 deletions

View File

@ -66,7 +66,8 @@ public class DesktopIntegration {
var externalHelpers = new String[]{"kde-open5", "kde-open", "gnome-open", "xdg-open"}; var externalHelpers = new String[]{"kde-open5", "kde-open", "gnome-open", "xdg-open"};
for (String helper : externalHelpers) { for (String helper : externalHelpers) {
try { try {
rt.exec(helper + " " + uri); ProcessBuilder pb = new ProcessBuilder(helper, uri);
pb.start();
return; return;
} catch (IOException e) { } catch (IOException e) {
LOG.debug("Couldn't open URL with {} {}", helper, uri); LOG.debug("Couldn't open URL with {} {}", helper, uri);
@ -116,10 +117,10 @@ public class DesktopIntegration {
// try external helpers // try external helpers
var externalHelpers = new String[]{"kde-open5", "kde-open", "gnome-open", "xdg-open"}; var externalHelpers = new String[]{"kde-open5", "kde-open", "gnome-open", "xdg-open"};
var rt = Runtime.getRuntime();
for (String helper : externalHelpers) { for (String helper : externalHelpers) {
try { try {
rt.exec(helper + " " + f.getAbsolutePath()); ProcessBuilder pb = new ProcessBuilder(helper, f.getAbsolutePath());
pb.start();
return; return;
} catch (IOException e) { } catch (IOException e) {
LOG.debug("Couldn't open file with {} {}", helper, f); LOG.debug("Couldn't open file with {} {}", helper, f);

View File

@ -90,7 +90,7 @@ public class BongaCamsConfigUI extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getBongaTabs(); List<String> tabs = getEnabledTabs();
GridPane checkboxGrid = new GridPane(); GridPane checkboxGrid = new GridPane();
checkboxGrid.setHgap(10); checkboxGrid.setHgap(10);
@ -99,32 +99,32 @@ public class BongaCamsConfigUI extends AbstractConfigUI {
CheckBox female = new CheckBox("Female"); CheckBox female = new CheckBox("Female");
female.setSelected(tabs.contains("female")); female.setSelected(tabs.contains("female"));
female.setOnAction(e -> toggleTabs("female", female.isSelected())); female.setOnAction(e -> toggleTab("female", female.isSelected()));
checkboxGrid.add(female, 0, 0); checkboxGrid.add(female, 0, 0);
CheckBox male = new CheckBox("Male"); CheckBox male = new CheckBox("Male");
male.setSelected(tabs.contains("male")); male.setSelected(tabs.contains("male"));
male.setOnAction(e -> toggleTabs("male", male.isSelected())); male.setOnAction(e -> toggleTab("male", male.isSelected()));
checkboxGrid.add(male, 1, 0); checkboxGrid.add(male, 1, 0);
CheckBox couples = new CheckBox("Couples"); CheckBox couples = new CheckBox("Couples");
couples.setSelected(tabs.contains("couples")); couples.setSelected(tabs.contains("couples"));
couples.setOnAction(e -> toggleTabs("couples", couples.isSelected())); couples.setOnAction(e -> toggleTab("couples", couples.isSelected()));
checkboxGrid.add(couples, 2, 0); checkboxGrid.add(couples, 2, 0);
CheckBox trans = new CheckBox("Trans"); CheckBox trans = new CheckBox("Trans");
trans.setSelected(tabs.contains("trans")); trans.setSelected(tabs.contains("trans"));
trans.setOnAction(e -> toggleTabs("trans", trans.isSelected())); trans.setOnAction(e -> toggleTab("trans", trans.isSelected()));
checkboxGrid.add(trans, 0, 1); checkboxGrid.add(trans, 0, 1);
CheckBox newModels = new CheckBox("New"); CheckBox newModels = new CheckBox("New");
newModels.setSelected(tabs.contains("new")); newModels.setSelected(tabs.contains("new"));
newModels.setOnAction(e -> toggleTabs("new", newModels.isSelected())); newModels.setOnAction(e -> toggleTab("new", newModels.isSelected()));
checkboxGrid.add(newModels, 1, 1); checkboxGrid.add(newModels, 1, 1);
CheckBox mobile = new CheckBox("Mobile"); CheckBox mobile = new CheckBox("Mobile");
mobile.setSelected(tabs.contains("mobile")); mobile.setSelected(tabs.contains("mobile"));
mobile.setOnAction(e -> toggleTabs("mobile", mobile.isSelected())); mobile.setOnAction(e -> toggleTab("mobile", mobile.isSelected()));
checkboxGrid.add(mobile, 2, 1); checkboxGrid.add(mobile, 2, 1);
layout.add(checkboxGrid, 1, row, 3, 2); layout.add(checkboxGrid, 1, row, 3, 2);
@ -148,7 +148,7 @@ public class BongaCamsConfigUI extends AbstractConfigUI {
return layout; return layout;
} }
private void toggleTabs(String tab, boolean selected) { private void toggleTab(String tab, boolean selected) {
var settings = Config.getInstance().getSettings(); var settings = Config.getInstance().getSettings();
if (selected) { if (selected) {
settings.bongaTabs.add(tab); settings.bongaTabs.add(tab);
@ -158,7 +158,7 @@ public class BongaCamsConfigUI extends AbstractConfigUI {
save(); save();
} }
private List<String> getBongaTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().bongaTabs); return new ArrayList<>(Config.getInstance().getSettings().bongaTabs);
} }
} }

View File

@ -34,7 +34,7 @@ public class BongaCamsTabProvider extends AbstractTabProvider {
tabMap.put("male", "Male"); tabMap.put("male", "Male");
tabMap.put("couple", "Couple"); tabMap.put("couple", "Couple");
tabMap.put("trans", "Trans"); tabMap.put("trans", "Trans");
List<String> enabledTabs = getBongaTabs(); List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) { for (String tab : enabledTabs) {
switch (tab) { switch (tab) {
case "female": case "female":
@ -77,7 +77,7 @@ public class BongaCamsTabProvider extends AbstractTabProvider {
return tab; return tab;
} }
private List<String> getBongaTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().bongaTabs); return new ArrayList<>(Config.getInstance().getSettings().bongaTabs);
} }

View File

@ -78,7 +78,7 @@ public class Cam4ConfigUI extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getCam4Tabs(); List<String> tabs = getEnabledTabs();
GridPane checkboxGrid = new GridPane(); GridPane checkboxGrid = new GridPane();
checkboxGrid.setHgap(10); checkboxGrid.setHgap(10);
@ -145,7 +145,7 @@ public class Cam4ConfigUI extends AbstractConfigUI {
save(); save();
} }
private List<String> getCam4Tabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().cam4Tabs); return new ArrayList<>(Config.getInstance().getSettings().cam4Tabs);
} }

View File

@ -31,7 +31,7 @@ public class Cam4TabProvider extends AbstractTabProvider {
tabMap.put("couples", "Couples"); tabMap.put("couples", "Couples");
tabMap.put("hd", "HD"); tabMap.put("hd", "HD");
tabMap.put("mobile", "Mobile"); tabMap.put("mobile", "Mobile");
List<String> enabledTabs = getCam4Tabs(); List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) { for (String tab : enabledTabs) {
String title = tabMap.getOrDefault(tab, tab); String title = tabMap.getOrDefault(tab, tab);
switch (tab) { switch (tab) {
@ -75,7 +75,7 @@ public class Cam4TabProvider extends AbstractTabProvider {
return tab; return tab;
} }
private List<String> getCam4Tabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().cam4Tabs); return new ArrayList<>(Config.getInstance().getSettings().cam4Tabs);
} }

View File

@ -78,7 +78,7 @@ public class CamsodaConfigUI extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getCamsodaTabs(); List<String> tabs = getEnabledTabs();
GridPane checkboxGrid = new GridPane(); GridPane checkboxGrid = new GridPane();
checkboxGrid.setHgap(10); checkboxGrid.setHgap(10);
@ -145,7 +145,7 @@ public class CamsodaConfigUI extends AbstractConfigUI {
save(); save();
} }
private List<String> getCamsodaTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().camsodaTabs); return new ArrayList<>(Config.getInstance().getSettings().camsodaTabs);
} }

View File

@ -42,7 +42,7 @@ public class CamsodaTabProvider extends AbstractTabProvider {
tabMap.put("t", "Trans"); tabMap.put("t", "Trans");
tabMap.put("isNew", "New"); tabMap.put("isNew", "New");
tabMap.put("isVoyeur", "Voyeur"); tabMap.put("isVoyeur", "Voyeur");
List<String> enabledTabs = getCamsodaTabs(); List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) { for (String tab : enabledTabs) {
String title = tabMap.getOrDefault(tab, tab); String title = tabMap.getOrDefault(tab, tab);
switch (tab) { switch (tab) {
@ -81,7 +81,7 @@ public class CamsodaTabProvider extends AbstractTabProvider {
return tab; return tab;
} }
private List<String> getCamsodaTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().camsodaTabs); return new ArrayList<>(Config.getInstance().getSettings().camsodaTabs);
} }

View File

@ -106,7 +106,7 @@ public class ChaturbateConfigUi extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getChaturbateTabs(); List<String> tabs = getEnabledTabs();
GridPane checkboxGrid = new GridPane(); GridPane checkboxGrid = new GridPane();
checkboxGrid.setHgap(10); checkboxGrid.setHgap(10);
@ -227,7 +227,7 @@ public class ChaturbateConfigUi extends AbstractConfigUI {
save(); save();
} }
private List<String> getChaturbateTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().chaturbateTabs); return new ArrayList<>(Config.getInstance().getSettings().chaturbateTabs);
} }
} }

View File

@ -29,7 +29,7 @@ public class ChaturbateTabProvider extends AbstractTabProvider {
protected List<Tab> getSiteTabs(Scene scene) { protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> tabs = new ArrayList<>(); List<Tab> tabs = new ArrayList<>();
for (String tab : getChaturbateTabs()) { for (String tab : getEnabledTabs()) {
switch (tab) { switch (tab) {
case "ft": case "ft":
tabs.add(createTab("Featured", apiUrl + "/roomlist/room-list/?enable_recommendations=false")); tabs.add(createTab("Featured", apiUrl + "/roomlist/room-list/?enable_recommendations=false"));
@ -120,7 +120,7 @@ public class ChaturbateTabProvider extends AbstractTabProvider {
return createTab(title, updateService); return createTab(title, updateService);
} }
private List<String> getChaturbateTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().chaturbateTabs); return new ArrayList<>(Config.getInstance().getSettings().chaturbateTabs);
} }
} }

View File

@ -59,7 +59,7 @@ public class DreamcamConfigUI extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getDreamcamTabs(); List<String> tabs = getEnabledTabs();
HBox checkboxContainer = new HBox(10); HBox checkboxContainer = new HBox(10);
@ -106,7 +106,7 @@ public class DreamcamConfigUI extends AbstractConfigUI {
save(); save();
} }
private List<String> getDreamcamTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().dreamcamTabs); return new ArrayList<>(Config.getInstance().getSettings().dreamcamTabs);
} }

View File

@ -30,16 +30,12 @@ public class DreamcamTabProvider extends AbstractTabProvider {
tabMap.put("men", "Boys"); tabMap.put("men", "Boys");
tabMap.put("couples", "Couples"); tabMap.put("couples", "Couples");
tabMap.put("trans", "Trans"); tabMap.put("trans", "Trans");
List<String> enabledTabs = getDreamcamTabs(); List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) { for (String tab : enabledTabs) {
String title = tabMap.getOrDefault(tab, tab); String title = tabMap.getOrDefault(tab, tab);
tabs.add(createTab(title, API_URL + "&tag-categories=" + tab)); tabs.add(createTab(title, API_URL + "&tag-categories=" + tab));
} }
// tabs.add(createTab("Girls", API_URL + "&tag-categories=girls"));
// tabs.add(createTab("Boys", API_URL + "&tag-categories=men"));
// tabs.add(createTab("Couples", API_URL + "&tag-categories=couples"));
// tabs.add(createTab("Trans", API_URL + "&tag-categories=trans"));
return tabs; return tabs;
} }
@ -51,7 +47,7 @@ public class DreamcamTabProvider extends AbstractTabProvider {
return tab; return tab;
} }
private List<String> getDreamcamTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().dreamcamTabs); return new ArrayList<>(Config.getInstance().getSettings().dreamcamTabs);
} }

View File

@ -1,5 +1,8 @@
package ctbrec.ui.sites.flirt4free; package ctbrec.ui.sites.flirt4free;
import java.util.ArrayList;
import java.util.List;
import ctbrec.Config; import ctbrec.Config;
import ctbrec.sites.flirt4free.Flirt4Free; import ctbrec.sites.flirt4free.Flirt4Free;
import ctbrec.ui.DesktopIntegration; import ctbrec.ui.DesktopIntegration;
@ -72,6 +75,43 @@ public class Flirt4FreeConfigUI extends AbstractConfigUI {
GridPane.setColumnSpan(password, 2); GridPane.setColumnSpan(password, 2);
layout.add(password, 1, row++); layout.add(password, 1, row++);
Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row);
List<String> 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 newModels = new CheckBox("Girls New");
newModels.setSelected(tabs.contains("hd"));
newModels.setOnAction(e -> toggleTab("hd", newModels.isSelected()));
checkboxGrid.add(newModels, 1, 0);
CheckBox male = new CheckBox("Male");
male.setSelected(tabs.contains("male"));
male.setOnAction(e -> toggleTab("male", male.isSelected()));
checkboxGrid.add(male, 2, 0);
CheckBox couples = new CheckBox("Couples");
couples.setSelected(tabs.contains("couples"));
couples.setOnAction(e -> toggleTab("couples", couples.isSelected()));
checkboxGrid.add(couples, 0, 1);
CheckBox trans = new CheckBox("Trans");
trans.setSelected(tabs.contains("trans"));
trans.setOnAction(e -> toggleTab("trans", trans.isSelected()));
checkboxGrid.add(trans, 1, 1);
layout.add(checkboxGrid, 1, row, 3, 2);
row += 2;
var createAccount = new Button("Create new Account"); var createAccount = new Button("Create new Account");
createAccount.setOnAction(e -> DesktopIntegration.open(flirt4free.getAffiliateLink())); createAccount.setOnAction(e -> DesktopIntegration.open(flirt4free.getAffiliateLink()));
layout.add(createAccount, 1, row++); layout.add(createAccount, 1, row++);
@ -89,4 +129,18 @@ public class Flirt4FreeConfigUI extends AbstractConfigUI {
return layout; 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<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().cam4Tabs);
}
} }

View File

@ -1,5 +1,6 @@
package ctbrec.ui.sites.flirt4free; package ctbrec.ui.sites.flirt4free;
import ctbrec.Config;
import ctbrec.sites.flirt4free.Flirt4Free; import ctbrec.sites.flirt4free.Flirt4Free;
import ctbrec.sites.flirt4free.Flirt4FreeModel; import ctbrec.sites.flirt4free.Flirt4FreeModel;
import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.sites.AbstractTabProvider;
@ -9,7 +10,9 @@ import javafx.scene.control.Tab;
import javafx.util.Duration; import javafx.util.Duration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.function.Predicate; import java.util.function.Predicate;
public class Flirt4FreeTabProvider extends AbstractTabProvider { public class Flirt4FreeTabProvider extends AbstractTabProvider {
@ -25,11 +28,36 @@ public class Flirt4FreeTabProvider extends AbstractTabProvider {
@Override @Override
protected List<Tab> getSiteTabs(Scene scene) { protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> tabs = new ArrayList<>(); List<Tab> tabs = new ArrayList<>();
tabs.add(createTab("Girls", site.getBaseUrl() + "/live/girls/?tpl=index2&model=json", m -> true));
tabs.add(createTab("New Girls", site.getBaseUrl() + "/live/girls/?tpl=index2&model=json", Flirt4FreeModel::isNew)); Map<String, String> tabMap = new HashMap<>();
tabs.add(createTab("Boys", site.getBaseUrl() + "/live/guys/?tpl=index2&model=json", m -> true)); tabMap.put("female", "Girls");
tabs.add(createTab("Couples", site.getBaseUrl() + "/live/couples/?tpl=index2&model=json", m -> m.getCategories().contains("2"))); tabMap.put("new", "New Girls");
tabs.add(createTab("Trans", site.getBaseUrl() + "/live/trans/?tpl=index2&model=json", m -> true)); tabMap.put("male", "Male");
tabMap.put("couples", "Couples");
tabMap.put("trans", "Trans");
List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) {
String title = tabMap.getOrDefault(tab, tab);
switch (tab) {
case "female":
tabs.add(createTab(title, site.getBaseUrl() + "/live/girls/?tpl=index2&model=json", m -> true));
break;
case "new":
tabs.add(createTab(title, site.getBaseUrl() + "/live/girls/?tpl=index2&model=json", Flirt4FreeModel::isNew));
break;
case "male":
tabs.add(createTab(title, site.getBaseUrl() + "/live/guys/?tpl=index2&model=json", m -> true));
break;
case "couples":
tabs.add(createTab(title, site.getBaseUrl() + "/live/couples/?tpl=index2&model=json", m -> m.getCategories().contains("2")));
break;
case "trans":
tabs.add(createTab(title, site.getBaseUrl() + "/live/trans/?tpl=index2&model=json", m -> true));
break;
default:
}
}
tabs.add(followedTab); tabs.add(followedTab);
return tabs; return tabs;
} }
@ -46,4 +74,9 @@ public class Flirt4FreeTabProvider extends AbstractTabProvider {
s.setPeriod(Duration.seconds(60)); s.setPeriod(Duration.seconds(60));
return tab; return tab;
} }
private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().flirt4freeTabs);
}
} }

View File

@ -78,7 +78,7 @@ public class ShowupConfigUI extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getShowupTabs(); List<String> tabs = getEnabledTabs();
HBox checkboxContainer = new HBox(10); HBox checkboxContainer = new HBox(10);
@ -128,7 +128,7 @@ public class ShowupConfigUI extends AbstractConfigUI {
save(); save();
} }
private List<String> getShowupTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().showupTabs); return new ArrayList<>(Config.getInstance().getSettings().showupTabs);
} }

View File

@ -27,7 +27,7 @@ public class ShowupTabProvider extends AbstractTabProvider {
tabMap.put("female", "Women"); tabMap.put("female", "Women");
tabMap.put("male", "Men"); tabMap.put("male", "Men");
tabMap.put("all", "All"); tabMap.put("all", "All");
List<String> enabledTabs = getShowupTabs(); List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) { for (String tab : enabledTabs) {
String title = tabMap.getOrDefault(tab, tab); String title = tabMap.getOrDefault(tab, tab);
tabs.add(createTab(title, tab)); tabs.add(createTab(title, tab));
@ -50,7 +50,7 @@ public class ShowupTabProvider extends AbstractTabProvider {
tab.setRecorder(site.getRecorder()); tab.setRecorder(site.getRecorder());
return tab; return tab;
} }
private List<String> getShowupTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().showupTabs); return new ArrayList<>(Config.getInstance().getSettings().showupTabs);
} }

View File

@ -78,7 +78,7 @@ public class StreamateConfigUI extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getStreamateTabs(); List<String> tabs = getEnabledTabs();
GridPane checkboxGrid = new GridPane(); GridPane checkboxGrid = new GridPane();
checkboxGrid.setHgap(10); checkboxGrid.setHgap(10);
@ -145,7 +145,7 @@ public class StreamateConfigUI extends AbstractConfigUI {
save(); save();
} }
private List<String> getStreamateTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().streamateTabs); return new ArrayList<>(Config.getInstance().getSettings().streamateTabs);
} }

View File

@ -31,7 +31,7 @@ public class StreamateTabProvider extends AbstractTabProvider {
tabMap.put("tm2f,tf2m", "Trans"); tabMap.put("tm2f,tf2m", "Trans");
tabMap.put("fn", "Girls New"); tabMap.put("fn", "Girls New");
tabMap.put("new", "New"); tabMap.put("new", "New");
List<String> enabledTabs = getStreamateTabs(); List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) { for (String tab : enabledTabs) {
String title = tabMap.getOrDefault(tab, tab); String title = tabMap.getOrDefault(tab, tab);
switch (tab) { switch (tab) {
@ -71,7 +71,7 @@ public class StreamateTabProvider extends AbstractTabProvider {
return tab; return tab;
} }
private List<String> getStreamateTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().streamateTabs); return new ArrayList<>(Config.getInstance().getSettings().streamateTabs);
} }

View File

@ -61,7 +61,7 @@ public class StreamrayConfigUI extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getStreamrayTabs(); List<String> tabs = getEnabledTabs();
HBox checkboxContainer = new HBox(10); HBox checkboxContainer = new HBox(10);
@ -103,7 +103,7 @@ public class StreamrayConfigUI extends AbstractConfigUI {
save(); save();
} }
private List<String> getStreamrayTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().streamrayTabs); return new ArrayList<>(Config.getInstance().getSettings().streamrayTabs);
} }

View File

@ -32,7 +32,7 @@ public class StreamrayTabProvider extends AbstractTabProvider {
tabMap.put("F", "Female"); tabMap.put("F", "Female");
tabMap.put("M", "Male"); tabMap.put("M", "Male");
tabMap.put("TS", "Trans"); tabMap.put("TS", "Trans");
List<String> enabledTabs = getStreamrayTabs(); List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) { for (String tab : enabledTabs) {
String title = tabMap.getOrDefault(tab, tab); String title = tabMap.getOrDefault(tab, tab);
tabs.add(createTab(title, m -> Objects.equals(tab, m.getGender()))); tabs.add(createTab(title, m -> Objects.equals(tab, m.getGender())));
@ -66,7 +66,7 @@ public class StreamrayTabProvider extends AbstractTabProvider {
public Tab getFollowedTab() { public Tab getFollowedTab() {
return followedTab; return followedTab;
} }
private List<String> getStreamrayTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().streamrayTabs); return new ArrayList<>(Config.getInstance().getSettings().streamrayTabs);
} }

View File

@ -118,7 +118,7 @@ public class StripchatConfigUI extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getStripchatTabs(); List<String> tabs = getEnabledTabs();
GridPane checkboxGrid = new GridPane(); GridPane checkboxGrid = new GridPane();
checkboxGrid.setHgap(10); checkboxGrid.setHgap(10);
@ -207,7 +207,7 @@ public class StripchatConfigUI extends AbstractConfigUI {
save(); save();
} }
private List<String> getStripchatTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().stripchatTabs); return new ArrayList<>(Config.getInstance().getSettings().stripchatTabs);
} }

View File

@ -41,7 +41,7 @@ public class StripchatTabProvider extends AbstractTabProvider {
tabMap.put("couples", "Couples"); tabMap.put("couples", "Couples");
tabMap.put("men", "Boys"); tabMap.put("men", "Boys");
tabMap.put("trans", "Trans"); tabMap.put("trans", "Trans");
List<String> enabledTabs = getStripchatTabs(); List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) { for (String tab : enabledTabs) {
String title = tabMap.getOrDefault(tab, tab); String title = tabMap.getOrDefault(tab, tab);
if (tab.contains("auto")) { if (tab.contains("auto")) {
@ -73,7 +73,7 @@ public class StripchatTabProvider extends AbstractTabProvider {
return tab; return tab;
} }
private List<String> getStripchatTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().stripchatTabs); return new ArrayList<>(Config.getInstance().getSettings().stripchatTabs);
} }

View File

@ -77,7 +77,7 @@ public class XloveCamConfigUI extends AbstractConfigUI {
Label tabsLabel = new Label("Tabs"); Label tabsLabel = new Label("Tabs");
layout.add(tabsLabel, 0, row); layout.add(tabsLabel, 0, row);
List<String> tabs = getXlovecamTabs(); List<String> tabs = getEnabledTabs();
GridPane checkboxGrid = new GridPane(); GridPane checkboxGrid = new GridPane();
checkboxGrid.setHgap(10); checkboxGrid.setHgap(10);
@ -149,7 +149,7 @@ public class XloveCamConfigUI extends AbstractConfigUI {
save(); save();
} }
private List<String> getXlovecamTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().xlovecamTabs); return new ArrayList<>(Config.getInstance().getSettings().xlovecamTabs);
} }

View File

@ -47,7 +47,7 @@ public class XloveCamTabProvider extends AbstractTabProvider {
tabMap.put("3", "Lesbian"); tabMap.put("3", "Lesbian");
tabMap.put("7", "Male"); tabMap.put("7", "Male");
tabMap.put("5", "Trans"); tabMap.put("5", "Trans");
List<String> enabledTabs = getXlovecamTabs(); List<String> enabledTabs = getEnabledTabs();
for (String tab : enabledTabs) { for (String tab : enabledTabs) {
String title = tabMap.getOrDefault(tab, tab); String title = tabMap.getOrDefault(tab, tab);
updateService = new XloveCamUpdateService(xloveCam, Map.of(FILTER_PARAM, tab)); updateService = new XloveCamUpdateService(xloveCam, Map.of(FILTER_PARAM, tab));
@ -63,7 +63,7 @@ public class XloveCamTabProvider extends AbstractTabProvider {
return tab; return tab;
} }
private List<String> getXlovecamTabs() { private List<String> getEnabledTabs() {
return new ArrayList<>(Config.getInstance().getSettings().xlovecamTabs); return new ArrayList<>(Config.getInstance().getSettings().xlovecamTabs);
} }

View File

@ -89,6 +89,7 @@ public class Settings {
public String ffmpegFileSuffix = "ts"; public String ffmpegFileSuffix = "ts";
public String flirt4freePassword; public String flirt4freePassword;
public String flirt4freeUsername; public String flirt4freeUsername;
public Set<String> flirt4freeTabs = new HashSet<>(Arrays.asList("female"));
public String fontFamily = "Sans-Serif"; public String fontFamily = "Sans-Serif";
public int fontSize = 14; public int fontSize = 14;
public String hlsdlExecutable = "hlsdl"; public String hlsdlExecutable = "hlsdl";

View File

@ -6,7 +6,6 @@ import com.iheartradio.m3u8.data.MasterPlaylist;
import com.iheartradio.m3u8.data.Playlist; import com.iheartradio.m3u8.data.Playlist;
import com.iheartradio.m3u8.data.PlaylistData; import com.iheartradio.m3u8.data.PlaylistData;
import ctbrec.AbstractModel; import ctbrec.AbstractModel;
import ctbrec.Config;
import ctbrec.StringUtil; import ctbrec.StringUtil;
import ctbrec.io.HttpException; import ctbrec.io.HttpException;
import ctbrec.io.json.ObjectMapperFactory; import ctbrec.io.json.ObjectMapperFactory;