From db5b6bdf5b64f9897ccbe49edbdad9d52daef3de Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Wed, 19 Dec 2018 13:37:31 +0100 Subject: [PATCH] Add a setting for the thumbnail overview update interval Implements #123 --- .../main/java/ctbrec/ui/ThumbOverviewTab.java | 3 +- .../java/ctbrec/ui/settings/SettingsTab.java | 53 ++++++++++++++----- .../myfreecams/MyFreeCamsFriendsTab.java | 4 -- .../myfreecams/MyFreeCamsTabProvider.java | 5 -- common/src/main/java/ctbrec/Settings.java | 1 + 5 files changed, 42 insertions(+), 24 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/ThumbOverviewTab.java b/client/src/main/java/ctbrec/ui/ThumbOverviewTab.java index 6ce0cdde..e07c6755 100644 --- a/client/src/main/java/ctbrec/ui/ThumbOverviewTab.java +++ b/client/src/main/java/ctbrec/ui/ThumbOverviewTab.java @@ -338,7 +338,8 @@ public class ThumbOverviewTab extends Tab implements TabSelectionListener { } void initializeUpdateService() { - updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10))); + int refreshRate = Config.getInstance().getSettings().overviewUpdateIntervalInSecs; + updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(refreshRate))); updateService.setOnSucceeded((event) -> onSuccess()); updateService.setOnFailed((event) -> onFail(event)); } diff --git a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java index 68c797b3..30034c4f 100644 --- a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java +++ b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java @@ -57,6 +57,7 @@ public class SettingsTab extends Tab implements TabSelectionListener { private TextField server; private TextField port; private TextField onlineCheckIntervalInSecs; + private TextField overviewUpdateIntervalInSecs; private TextField leaveSpaceOnDevice; private TextField minimumLengthInSecs; private CheckBox loadResolution; @@ -451,17 +452,6 @@ public class SettingsTab extends Tab implements TabSelectionListener { GridPane.setMargin(chooseStreamQuality, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN)); layout.add(chooseStreamQuality, 1, row++); - l = new Label("Update thumbnails"); - layout.add(l, 0, row); - updateThumbnails.setSelected(Config.getInstance().getSettings().updateThumbnails); - updateThumbnails.setOnAction((e) -> { - Config.getInstance().getSettings().updateThumbnails = updateThumbnails.isSelected(); - saveConfig(); - }); - GridPane.setMargin(l, new Insets(3, 0, 0, 0)); - GridPane.setMargin(updateThumbnails, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN)); - layout.add(updateThumbnails, 1, row++); - l = new Label("Enable live previews (experimental)"); layout.add(l, 0, row); livePreviews.setSelected(Config.getInstance().getSettings().livePreviews); @@ -474,6 +464,40 @@ public class SettingsTab extends Tab implements TabSelectionListener { GridPane.setMargin(livePreviews, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN)); layout.add(livePreviews, 1, row++); + Tooltip tt = new Tooltip("The overviews will still be updated, but the thumbnails won't be changed. This is useful for less powerful systems."); + l = new Label("Update thumbnails"); + l.setTooltip(tt); + layout.add(l, 0, row); + updateThumbnails.setTooltip(tt); + updateThumbnails.setSelected(Config.getInstance().getSettings().updateThumbnails); + updateThumbnails.setOnAction((e) -> { + Config.getInstance().getSettings().updateThumbnails = updateThumbnails.isSelected(); + saveConfig(); + }); + GridPane.setMargin(l, new Insets(3, 0, 0, 0)); + GridPane.setMargin(updateThumbnails, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN)); + layout.add(updateThumbnails, 1, row++); + + tt = new Tooltip("Update the thumbnail overviews every x seconds"); + l = new Label("Update overview interval (seconds)"); + l.setTooltip(tt); + layout.add(l, 0, row); + overviewUpdateIntervalInSecs = new TextField(Integer.toString(Config.getInstance().getSettings().overviewUpdateIntervalInSecs)); + overviewUpdateIntervalInSecs.setTooltip(tt); + overviewUpdateIntervalInSecs.textProperty().addListener((observable, oldValue, newValue) -> { + if (!newValue.matches("\\d*")) { + overviewUpdateIntervalInSecs.setText(newValue.replaceAll("[^\\d]", "")); + } + if(!overviewUpdateIntervalInSecs.getText().isEmpty()) { + Config.getInstance().getSettings().overviewUpdateIntervalInSecs = Integer.parseInt(overviewUpdateIntervalInSecs.getText()); + saveConfig(); + showRestartRequired(); + } + }); + GridPane.setMargin(l, new Insets(3, 0, 0, 0)); + GridPane.setMargin(overviewUpdateIntervalInSecs, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN)); + layout.add(overviewUpdateIntervalInSecs, 1, row++); + l = new Label("Start Tab"); layout.add(l, 0, row); startTab = new ComboBox<>(); @@ -482,15 +506,16 @@ public class SettingsTab extends Tab implements TabSelectionListener { saveConfig(); }); layout.add(startTab, 1, row++); - GridPane.setMargin(l, new Insets(3, 0, 0, 0)); - GridPane.setMargin(startTab, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN)); + GridPane.setMargin(l, new Insets(0, 0, 0, 0)); + GridPane.setMargin(startTab, new Insets(0, 0, 0, CHECKBOX_MARGIN)); + overviewUpdateIntervalInSecs.maxWidthProperty().bind(startTab.widthProperty()); l = new Label("Colors (Base / Accent)"); layout.add(l, 0, row); ColorSettingsPane colorSettingsPane = new ColorSettingsPane(this); layout.add(colorSettingsPane, 1, row++); GridPane.setMargin(l, new Insets(0, 0, 0, 0)); - GridPane.setMargin(colorSettingsPane, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN)); + GridPane.setMargin(colorSettingsPane, new Insets(0, 0, 0, CHECKBOX_MARGIN)); TitledPane general = new TitledPane("General", layout); general.setCollapsible(false); diff --git a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsFriendsTab.java b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsFriendsTab.java index 5b2e2a31..004dfec5 100644 --- a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsFriendsTab.java +++ b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsFriendsTab.java @@ -1,8 +1,6 @@ package ctbrec.ui.sites.myfreecams; import static ctbrec.ui.sites.myfreecams.FriendsUpdateService.Mode.*; -import java.util.concurrent.TimeUnit; - import ctbrec.sites.mfc.MyFreeCams; import ctbrec.ui.FollowedTab; import ctbrec.ui.ThumbOverviewTab; @@ -13,12 +11,10 @@ import javafx.scene.control.ToggleGroup; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.layout.HBox; -import javafx.util.Duration; public class MyFreeCamsFriendsTab extends ThumbOverviewTab implements FollowedTab { public MyFreeCamsFriendsTab(MyFreeCams mfc) { super("Friends", new FriendsUpdateService(mfc), mfc); - updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10))); } @Override diff --git a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTabProvider.java b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTabProvider.java index 68847ed1..998006e2 100644 --- a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTabProvider.java @@ -2,7 +2,6 @@ package ctbrec.ui.sites.myfreecams; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.TimeUnit; import ctbrec.recorder.Recorder; import ctbrec.sites.mfc.MyFreeCams; @@ -11,7 +10,6 @@ import ctbrec.ui.TabProvider; import ctbrec.ui.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -import javafx.util.Duration; public class MyFreeCamsTabProvider extends TabProvider { private Recorder recorder; @@ -30,7 +28,6 @@ public class MyFreeCamsTabProvider extends TabProvider { PaginatedScheduledService updateService = new OnlineCamsUpdateService(); ThumbOverviewTab online = new ThumbOverviewTab("Online", updateService, myFreeCams); online.setRecorder(recorder); - updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10))); tabs.add(online); friends = new MyFreeCamsFriendsTab(myFreeCams); @@ -40,13 +37,11 @@ public class MyFreeCamsTabProvider extends TabProvider { updateService = new HDCamsUpdateService(); ThumbOverviewTab hd = new ThumbOverviewTab("HD", updateService, myFreeCams); hd.setRecorder(recorder); - updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10))); tabs.add(hd); updateService = new PopularModelService(); ThumbOverviewTab pop = new ThumbOverviewTab("Most Popular", updateService, myFreeCams); pop.setRecorder(recorder); - updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10))); tabs.add(pop); MyFreeCamsTableTab table = new MyFreeCamsTableTab(myFreeCams); diff --git a/common/src/main/java/ctbrec/Settings.java b/common/src/main/java/ctbrec/Settings.java index c96cf985..5aedbdb0 100644 --- a/common/src/main/java/ctbrec/Settings.java +++ b/common/src/main/java/ctbrec/Settings.java @@ -92,6 +92,7 @@ public class Settings { public String colorBase = "#FFFFFF"; public String colorAccent = "#FFFFFF"; public int onlineCheckIntervalInSecs = 60; + public int overviewUpdateIntervalInSecs = 10; public String recordedModelsSortColumn = ""; public String recordedModelsSortType = ""; public double[] recordedModelsColumnWidths = new double[0];