Add ignore action to model menu contributor

This commit is contained in:
0xb00bface 2021-06-26 17:53:32 +02:00
parent df91a71eb7
commit e0a9d5ccf0
2 changed files with 30 additions and 20 deletions

View File

@ -17,6 +17,7 @@ import ctbrec.ui.AutosizeAlert;
import ctbrec.ui.SiteUiFactory;
import ctbrec.ui.StreamSourceSelectionDialog;
import ctbrec.ui.action.AddToGroupAction;
import ctbrec.ui.action.IgnoreModelsAction;
import ctbrec.ui.action.PlayAction;
import ctbrec.ui.action.SetStopDateAction;
import ctbrec.ui.action.StartRecordingAction;
@ -44,6 +45,8 @@ public class ModelMenuContributor {
private Node source;
private Consumer<Model> startStopCallback;
private TriConsumer<Model, Boolean, Boolean> followCallback;
private Consumer<Model> ignoreCallback;
private boolean removeWithIgnore = false;
private ModelMenuContributor(Node source, Config config, Recorder recorder) {
this.source = source;
@ -65,9 +68,20 @@ public class ModelMenuContributor {
return this;
}
public ModelMenuContributor withIgnoreCallback(Consumer<Model> ignoreCallback) {
this.ignoreCallback = ignoreCallback;
return this;
}
public ModelMenuContributor removeModelAfterIgnore(boolean yes) {
this.removeWithIgnore = yes;
return this;
}
public void contributeToMenu(List<Model> selectedModels, ContextMenu menu) {
startStopCallback = Optional.ofNullable(startStopCallback).orElse(m -> {});
followCallback = Optional.ofNullable(followCallback).orElse((m, f, s) -> {});
ignoreCallback = Optional.ofNullable(ignoreCallback).orElse(m -> {});
addOpenInPlayer(menu, selectedModels);
menu.getItems().add(new SeparatorMenuItem());
addStartOrStop(menu, selectedModels);
@ -78,6 +92,17 @@ public class ModelMenuContributor {
addGroupMenu(menu, selectedModels);
menu.getItems().add(new SeparatorMenuItem());
addFollowUnfollow(menu, selectedModels);
addIgnore(menu, selectedModels);
}
private void addIgnore(ContextMenu menu, List<Model> selectedModels) {
var ignore = new MenuItem("Ignore");
ignore.setOnAction(e -> ignore(selectedModels));
menu.getItems().add(ignore);
}
private void ignore(List<Model> selectedModels) {
new IgnoreModelsAction(source, selectedModels, recorder, removeWithIgnore).execute(ignoreCallback);
}
private void addFollowUnfollow(ContextMenu menu, List<Model> selectedModels) {

View File

@ -4,10 +4,8 @@ import java.io.IOException;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.BlockingQueue;
@ -35,7 +33,6 @@ import ctbrec.ui.AutosizeAlert;
import ctbrec.ui.DesktopIntegration;
import ctbrec.ui.SiteUiFactory;
import ctbrec.ui.TokenLabel;
import ctbrec.ui.action.IgnoreModelsAction;
import ctbrec.ui.action.OpenRecordingsDir;
import ctbrec.ui.action.TipAction;
import ctbrec.ui.controls.CustomMouseBehaviorContextMenu;
@ -461,9 +458,6 @@ public class ThumbOverviewTab extends Tab implements TabSelectionListener {
var model = cell.getModel();
var selectedModels = getSelectedThumbCells(cell).stream().map(ThumbCell::getModel).collect(Collectors.toList());
var ignore = new MenuItem("Ignore");
ignore.setOnAction(e -> ignore(getSelectedThumbCells(cell)));
var refresh = new MenuItem("Refresh Overview");
refresh.setOnAction(e -> refresh());
@ -494,12 +488,16 @@ public class ThumbOverviewTab extends Tab implements TabSelectionListener {
selectedThumbCells.clear();
}
})
.withIgnoreCallback(m -> getThumbCell(m).ifPresent(thumbCell -> {
grid.getChildren().remove(thumbCell);
selectedThumbCells.remove(thumbCell);
}))
.contributeToMenu(selectedModels, contextMenu);
if (site.supportsTips()) {
contextMenu.getItems().add(sendTip);
}
contextMenu.getItems().addAll(copyUrl, openInBrowser, ignore, refresh, openRecDir);
contextMenu.getItems().addAll(copyUrl, openInBrowser, refresh, openRecDir);
if (model instanceof MyFreeCamsModel && Objects.equals(System.getenv("CTBREC_DEV"), "1")) {
var debug = new MenuItem("debug");
debug.setOnAction(e -> MyFreeCamsClient.getInstance().getSessionState(model));
@ -589,19 +587,6 @@ public class ThumbOverviewTab extends Tab implements TabSelectionListener {
}
}
protected void ignore(List<ThumbCell> selection) {
Map<Model, ThumbCell> thumbcells = new HashMap<>();
List<Model> selectedModels = selection.stream().map(tc -> {
thumbcells.put(tc.getModel(), tc);
return tc;
}).map(ThumbCell::getModel).collect(Collectors.toList());
new IgnoreModelsAction(grid, selectedModels, recorder, false).execute(m -> {
var thumbCell = thumbcells.get(m);
grid.getChildren().remove(thumbCell);
selectedThumbCells.remove(thumbCell);
});
}
private void showAddToFollowedAnimation(ThumbCell thumbCell) {
Platform.runLater(() -> {
var tx = thumbCell.getLocalToParentTransform();