diff --git a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java index 6a81533e..260d9cf7 100644 --- a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java +++ b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java @@ -1,6 +1,7 @@ package ctbrec.ui.settings; import ctbrec.Config; +import ctbrec.event.Event; import ctbrec.GlobalThreadPool; import ctbrec.Hmac; import ctbrec.Settings; @@ -14,6 +15,7 @@ import ctbrec.ui.SiteUI; import ctbrec.ui.SiteUiFactory; import ctbrec.ui.controls.range.DiscreteRange; import ctbrec.ui.settings.api.*; +import ctbrec.ui.sites.chaturbate.ChaturbateTabProvider; import ctbrec.ui.sites.ConfigUI; import ctbrec.ui.tabs.TabSelectionListener; import javafx.animation.FadeTransition; @@ -23,6 +25,7 @@ import javafx.beans.binding.BooleanExpression; import javafx.beans.property.*; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; +import javafx.collections.ObservableList; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Node; @@ -34,6 +37,7 @@ import javafx.scene.layout.*; import javafx.scene.paint.Color; import javafx.util.Duration; import lombok.Getter; +import org.controlsfx.control.spreadsheet.Grid; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -210,6 +214,14 @@ public class SettingsTab extends Tab implements TabSelectionListener { confirmationDialogs = new SimpleBooleanProperty(null, "confirmationForDangerousActions", settings.confirmationForDangerousActions); naCamsOnly = new SimpleBooleanProperty(null, "filterNAcamsOnly", settings.filterNAcamsOnly); naCamsOnly.addListener((obs, oldValue, newValue) -> { settings.filterNAcamsOnly = newValue; saveConfig();}); + naCamsOnly.addListener((obs, oldValue, newValue) -> { + settings.filterNAcamsOnly = newValue; + saveConfig(); + // Refresh Chaturbate tabs if the setting changes + if (getTabPane() != null) { + refreshChaturbateTabs(); + } + }); useHlsdl = new SimpleBooleanProperty(null, "useHlsdl", settings.useHlsdl); hlsdlExecutable = new SimpleFileProperty(null, "hlsdlExecutable", settings.hlsdlExecutable); recentlyWatched = new SimpleBooleanProperty(null, "recentlyWatched", settings.recentlyWatched); @@ -260,7 +272,7 @@ public class SettingsTab extends Tab implements TabSelectionListener { Setting.of("Start minimized", startMinimized, "Start the app minimized to the tray, automatically activates \"Minimize to tray\""), Setting.of("Add models from clipboard", monitorClipboard, "Monitor clipboard for model URLs and automatically add them to the recorder").needsRestart(), Setting.of("Show confirmation dialogs", confirmationDialogs, "Show confirmation dialogs for irreversible actions"), - Setting.of("Show only North America Cams", naCamsOnly, "Show only North America Cams").needsRestart(), + Setting.of("Show only North America Cams", naCamsOnly, "Show only North America Cams"), Setting.of("Recording tab per site", recordedModelsPerSite, "Add a Recording tab for each site").needsRestart(), Setting.of("Check for new versions at startup", checkForUpdates, "Search for updates every startup"), Setting.of("Start Tab", startTab)), @@ -418,6 +430,22 @@ public class SettingsTab extends Tab implements TabSelectionListener { variablesHelpButton.disableProperty().bind(recordLocal); } + private void refreshChaturbateTabs() { + // Find and refresh Chaturbate tabs + ObservableList tabs = getTabPane().getTabs(); + for (Tab tab : tabs) { + if (tab.getContent() instanceof ThumbOverviewTab) { + ThumbOverviewTab overviewTab = (ThumbOverviewTab) tab.getContent(); + if (overviewTab.getUpdateService() instanceof ChaturbateUpdateService) { + ChaturbateUpdateService updateService = (ChaturbateUpdateService) overviewTab.getUpdateService(); + // Rebuild the URL with the updated setting + updateService.setUrl(updateService.buildUrl(updateService.getEndpoint())); + updateService.restart(); + } + } + } + } + private void splitValuesChanged(ObservableValue value, Object oldV, Object newV) { boolean splitAfterSet = settings.splitRecordingsAfterSecs > 0; boolean splitBiggerThanSet = settings.splitRecordingsBiggerThanBytes > 0; diff --git a/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java b/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java index 61680cc5..5e69d0a3 100644 --- a/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java @@ -1,6 +1,7 @@ package ctbrec.ui.sites.chaturbate; import ctbrec.Config; +import ctbrec.Settings; import ctbrec.sites.chaturbate.Chaturbate; import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.PaginatedScheduledService; @@ -15,12 +16,10 @@ public class ChaturbateTabProvider extends AbstractTabProvider { private final String apiUrl; private final ChaturbateFollowedTab followedTab; - private final boolean regionNAEnabled; // Store the setting public ChaturbateTabProvider(Chaturbate chaturbate) { super(chaturbate); apiUrl = site.getBaseUrl() + "/api/ts"; - regionNAEnabled = Config.getInstance().isFilterNAcamsOnlyEnabled(); this.followedTab = new ChaturbateFollowedTab("Followed", buildUrl("/roomlist/room-list/?enable_recommendations=false&follow=true"), chaturbate); } @@ -81,6 +80,7 @@ public class ChaturbateTabProvider extends AbstractTabProvider { // Helper function to append region filter if enabled private String buildUrl(String endpoint) { + boolean regionNAEnabled = Config.getInstance().isFilterNAcamsOnlyEnabled(); return apiUrl + endpoint + (regionNAEnabled ? "®ions=NA" : ""); } } \ No newline at end of file