forked from j62/ctbrec
Add a setting for the thumbnail overview update interval
Implements #123
This commit is contained in:
parent
44b8deb27d
commit
db5b6bdf5b
|
@ -338,7 +338,8 @@ public class ThumbOverviewTab extends Tab implements TabSelectionListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
void initializeUpdateService() {
|
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.setOnSucceeded((event) -> onSuccess());
|
||||||
updateService.setOnFailed((event) -> onFail(event));
|
updateService.setOnFailed((event) -> onFail(event));
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
private TextField server;
|
private TextField server;
|
||||||
private TextField port;
|
private TextField port;
|
||||||
private TextField onlineCheckIntervalInSecs;
|
private TextField onlineCheckIntervalInSecs;
|
||||||
|
private TextField overviewUpdateIntervalInSecs;
|
||||||
private TextField leaveSpaceOnDevice;
|
private TextField leaveSpaceOnDevice;
|
||||||
private TextField minimumLengthInSecs;
|
private TextField minimumLengthInSecs;
|
||||||
private CheckBox loadResolution;
|
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));
|
GridPane.setMargin(chooseStreamQuality, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN));
|
||||||
layout.add(chooseStreamQuality, 1, row++);
|
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)");
|
l = new Label("Enable live previews (experimental)");
|
||||||
layout.add(l, 0, row);
|
layout.add(l, 0, row);
|
||||||
livePreviews.setSelected(Config.getInstance().getSettings().livePreviews);
|
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));
|
GridPane.setMargin(livePreviews, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN));
|
||||||
layout.add(livePreviews, 1, row++);
|
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");
|
l = new Label("Start Tab");
|
||||||
layout.add(l, 0, row);
|
layout.add(l, 0, row);
|
||||||
startTab = new ComboBox<>();
|
startTab = new ComboBox<>();
|
||||||
|
@ -482,15 +506,16 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
saveConfig();
|
saveConfig();
|
||||||
});
|
});
|
||||||
layout.add(startTab, 1, row++);
|
layout.add(startTab, 1, row++);
|
||||||
GridPane.setMargin(l, new Insets(3, 0, 0, 0));
|
GridPane.setMargin(l, new Insets(0, 0, 0, 0));
|
||||||
GridPane.setMargin(startTab, new Insets(CHECKBOX_MARGIN, 0, 0, CHECKBOX_MARGIN));
|
GridPane.setMargin(startTab, new Insets(0, 0, 0, CHECKBOX_MARGIN));
|
||||||
|
overviewUpdateIntervalInSecs.maxWidthProperty().bind(startTab.widthProperty());
|
||||||
|
|
||||||
l = new Label("Colors (Base / Accent)");
|
l = new Label("Colors (Base / Accent)");
|
||||||
layout.add(l, 0, row);
|
layout.add(l, 0, row);
|
||||||
ColorSettingsPane colorSettingsPane = new ColorSettingsPane(this);
|
ColorSettingsPane colorSettingsPane = new ColorSettingsPane(this);
|
||||||
layout.add(colorSettingsPane, 1, row++);
|
layout.add(colorSettingsPane, 1, row++);
|
||||||
GridPane.setMargin(l, new Insets(0, 0, 0, 0));
|
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);
|
TitledPane general = new TitledPane("General", layout);
|
||||||
general.setCollapsible(false);
|
general.setCollapsible(false);
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package ctbrec.ui.sites.myfreecams;
|
package ctbrec.ui.sites.myfreecams;
|
||||||
import static ctbrec.ui.sites.myfreecams.FriendsUpdateService.Mode.*;
|
import static ctbrec.ui.sites.myfreecams.FriendsUpdateService.Mode.*;
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import ctbrec.sites.mfc.MyFreeCams;
|
import ctbrec.sites.mfc.MyFreeCams;
|
||||||
import ctbrec.ui.FollowedTab;
|
import ctbrec.ui.FollowedTab;
|
||||||
import ctbrec.ui.ThumbOverviewTab;
|
import ctbrec.ui.ThumbOverviewTab;
|
||||||
|
@ -13,12 +11,10 @@ import javafx.scene.control.ToggleGroup;
|
||||||
import javafx.scene.input.KeyCode;
|
import javafx.scene.input.KeyCode;
|
||||||
import javafx.scene.input.KeyEvent;
|
import javafx.scene.input.KeyEvent;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.util.Duration;
|
|
||||||
|
|
||||||
public class MyFreeCamsFriendsTab extends ThumbOverviewTab implements FollowedTab {
|
public class MyFreeCamsFriendsTab extends ThumbOverviewTab implements FollowedTab {
|
||||||
public MyFreeCamsFriendsTab(MyFreeCams mfc) {
|
public MyFreeCamsFriendsTab(MyFreeCams mfc) {
|
||||||
super("Friends", new FriendsUpdateService(mfc), mfc);
|
super("Friends", new FriendsUpdateService(mfc), mfc);
|
||||||
updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -2,7 +2,6 @@ package ctbrec.ui.sites.myfreecams;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import ctbrec.recorder.Recorder;
|
import ctbrec.recorder.Recorder;
|
||||||
import ctbrec.sites.mfc.MyFreeCams;
|
import ctbrec.sites.mfc.MyFreeCams;
|
||||||
|
@ -11,7 +10,6 @@ import ctbrec.ui.TabProvider;
|
||||||
import ctbrec.ui.ThumbOverviewTab;
|
import ctbrec.ui.ThumbOverviewTab;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
import javafx.util.Duration;
|
|
||||||
|
|
||||||
public class MyFreeCamsTabProvider extends TabProvider {
|
public class MyFreeCamsTabProvider extends TabProvider {
|
||||||
private Recorder recorder;
|
private Recorder recorder;
|
||||||
|
@ -30,7 +28,6 @@ public class MyFreeCamsTabProvider extends TabProvider {
|
||||||
PaginatedScheduledService updateService = new OnlineCamsUpdateService();
|
PaginatedScheduledService updateService = new OnlineCamsUpdateService();
|
||||||
ThumbOverviewTab online = new ThumbOverviewTab("Online", updateService, myFreeCams);
|
ThumbOverviewTab online = new ThumbOverviewTab("Online", updateService, myFreeCams);
|
||||||
online.setRecorder(recorder);
|
online.setRecorder(recorder);
|
||||||
updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10)));
|
|
||||||
tabs.add(online);
|
tabs.add(online);
|
||||||
|
|
||||||
friends = new MyFreeCamsFriendsTab(myFreeCams);
|
friends = new MyFreeCamsFriendsTab(myFreeCams);
|
||||||
|
@ -40,13 +37,11 @@ public class MyFreeCamsTabProvider extends TabProvider {
|
||||||
updateService = new HDCamsUpdateService();
|
updateService = new HDCamsUpdateService();
|
||||||
ThumbOverviewTab hd = new ThumbOverviewTab("HD", updateService, myFreeCams);
|
ThumbOverviewTab hd = new ThumbOverviewTab("HD", updateService, myFreeCams);
|
||||||
hd.setRecorder(recorder);
|
hd.setRecorder(recorder);
|
||||||
updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10)));
|
|
||||||
tabs.add(hd);
|
tabs.add(hd);
|
||||||
|
|
||||||
updateService = new PopularModelService();
|
updateService = new PopularModelService();
|
||||||
ThumbOverviewTab pop = new ThumbOverviewTab("Most Popular", updateService, myFreeCams);
|
ThumbOverviewTab pop = new ThumbOverviewTab("Most Popular", updateService, myFreeCams);
|
||||||
pop.setRecorder(recorder);
|
pop.setRecorder(recorder);
|
||||||
updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10)));
|
|
||||||
tabs.add(pop);
|
tabs.add(pop);
|
||||||
|
|
||||||
MyFreeCamsTableTab table = new MyFreeCamsTableTab(myFreeCams);
|
MyFreeCamsTableTab table = new MyFreeCamsTableTab(myFreeCams);
|
||||||
|
|
|
@ -92,6 +92,7 @@ public class Settings {
|
||||||
public String colorBase = "#FFFFFF";
|
public String colorBase = "#FFFFFF";
|
||||||
public String colorAccent = "#FFFFFF";
|
public String colorAccent = "#FFFFFF";
|
||||||
public int onlineCheckIntervalInSecs = 60;
|
public int onlineCheckIntervalInSecs = 60;
|
||||||
|
public int overviewUpdateIntervalInSecs = 10;
|
||||||
public String recordedModelsSortColumn = "";
|
public String recordedModelsSortColumn = "";
|
||||||
public String recordedModelsSortType = "";
|
public String recordedModelsSortType = "";
|
||||||
public double[] recordedModelsColumnWidths = new double[0];
|
public double[] recordedModelsColumnWidths = new double[0];
|
||||||
|
|
Loading…
Reference in New Issue