forked from j62/ctbrec
1
0
Fork 0

Add button/dialog to settings to edit the ignore list

This commit is contained in:
0xboobface 2019-04-11 15:18:46 +02:00
parent 9696edd002
commit 0ae139e17a
3 changed files with 107 additions and 0 deletions

View File

@ -570,6 +570,7 @@ public class ThumbOverviewTab extends Tab implements TabSelectionListener {
Config.getInstance().getSettings().modelsIgnored.add(model); Config.getInstance().getSettings().modelsIgnored.add(model);
grid.getChildren().remove(thumbCell); grid.getChildren().remove(thumbCell);
} }
selectedThumbCells.clear();
} }
private void showAddToFollowedAnimation(ThumbCell thumbCell) { private void showAddToFollowedAnimation(ThumbCell thumbCell) {

View File

@ -0,0 +1,94 @@
package ctbrec.ui.settings;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ctbrec.Config;
import ctbrec.Model;
import ctbrec.ui.controls.Dialogs;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import javafx.scene.image.Image;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.GridPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
public class IgnoreListDialog extends Dialog<Void> {
private static final transient Logger LOG = LoggerFactory.getLogger(IgnoreListDialog.class);
private Scene parent;
private ListView<Model> ignoreList;
public IgnoreListDialog(Scene parent) {
this.parent = parent;
createGui();
loadIgnoredModels();
}
private void createGui() {
setTitle("Ignore List");
getDialogPane().getButtonTypes().addAll(ButtonType.OK);
initModality(Modality.APPLICATION_MODAL);
setResizable(true);
InputStream icon = Dialogs.class.getResourceAsStream("/icon.png");
Stage stage = (Stage) getDialogPane().getScene().getWindow();
stage.getIcons().add(new Image(icon));
if(parent != null) {
stage.getScene().getStylesheets().addAll(parent.getStylesheets());
}
GridPane grid = new GridPane();
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(20, 150, 10, 10));
ignoreList = new ListView<>();
ignoreList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
ignoreList.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
if (event.getCode() == KeyCode.DELETE) {
removeSelectedModels();
}
});
grid.add(ignoreList, 0, 0);
Button remove = new Button("Remove");
remove.setOnAction(evt -> removeSelectedModels());
grid.add(remove, 0, 1);
getDialogPane().setContent(grid);
setResizable(true);
}
private void removeSelectedModels() {
List<Model> selectedModels = ignoreList.getSelectionModel().getSelectedItems();
if(selectedModels.isEmpty()) {
return;
} else {
Config.getInstance().getSettings().modelsIgnored.removeAll(selectedModels);
ignoreList.getItems().removeAll(selectedModels);
LOG.debug(Config.getInstance().getSettings().modelsIgnored.toString());
try {
Config.getInstance().save();
} catch (IOException e) {
LOG.warn("Couldn't save config", e);
}
}
}
private void loadIgnoredModels() {
List<Model> ignored = Config.getInstance().getSettings().modelsIgnored;
ignoreList.getItems().addAll(ignored);
}
}

View File

@ -27,6 +27,7 @@ import javafx.geometry.HPos;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.Accordion; import javafx.scene.control.Accordion;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox; import javafx.scene.control.ComboBox;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@ -136,6 +137,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
ActionSettingsPanel actions = new ActionSettingsPanel(this, recorder); ActionSettingsPanel actions = new ActionSettingsPanel(this, recorder);
rightSide.getChildren().add(actions); rightSide.getChildren().add(actions);
proxySettingsPane = new ProxySettingsPane(this); proxySettingsPane = new ProxySettingsPane(this);
rightSide.getChildren().add(createIgnoreListPanel());
rightSide.getChildren().add(proxySettingsPane); rightSide.getChildren().add(proxySettingsPane);
for (int i = 0; i < sites.size(); i++) { for (int i = 0; i < sites.size(); i++) {
Site site = sites.get(i); Site site = sites.get(i);
@ -413,6 +415,16 @@ public class SettingsTab extends Tab implements TabSelectionListener {
return locations; return locations;
} }
private Node createIgnoreListPanel() {
GridPane layout = createGridLayout();
Button edit = new Button("Edit");
edit.setOnAction(e -> new IgnoreListDialog(edit.getScene()).showAndWait());
layout.add(edit, 0, 0);
TitledPane ignoreList = new TitledPane("Ignore List", layout);
ignoreList.setCollapsible(false);
return ignoreList;
}
private Node createGeneralPanel() { private Node createGeneralPanel() {
GridPane layout = createGridLayout(); GridPane layout = createGridLayout();
int row = 0; int row = 0;