package de.bisquallisoft.twitch.controller; import de.bisquallisoft.twitch.Settings; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.ChoiceBox; import javafx.scene.control.TextField; import javafx.scene.input.KeyEvent; import javafx.stage.Stage; import java.net.URL; import java.util.ResourceBundle; public class SettingsController implements Initializable { private Settings settings = Settings.getInstance(); @FXML private TextField txtUpdateInterval; @FXML private ChoiceBox<String> chcQuality; @FXML private CheckBox chkNotifications; @FXML public CheckBox chkMinimizeToTray; @FXML private Button btnConfirm; @FXML private Button btnCancel; @Override public void initialize(URL url, ResourceBundle resourceBundle) { initializeUpdateInterval(); initializeQuality(); initializeNotification(); chkMinimizeToTray.setSelected(settings.getMinimizeToTray()); } private void initializeUpdateInterval() { txtUpdateInterval.setText(settings.getUpdateInterval().toString()); txtUpdateInterval.addEventFilter(KeyEvent.KEY_TYPED, keyEvent -> { if (!keyEvent.getCharacter().matches("[0-9]")) { keyEvent.consume(); } }); } private void initializeQuality() { chcQuality.getItems().setAll("best", "source", "high", "medium", "low", "mobile"); chcQuality.getSelectionModel().select(settings.getQuality()); } private void initializeNotification() { chkNotifications.setSelected(settings.isNotifications()); } @FXML private void confirmClicked(ActionEvent event) { //update interval setting int value = Integer.parseInt(txtUpdateInterval.getText()); settings.setUpdateInterval(value); //stream quality setting settings.setQuality(chcQuality.getSelectionModel().getSelectedItem()); //stream online notification toggle settings.setNotifications(chkNotifications.isSelected()); settings.setMinimizeToTray(chkMinimizeToTray.isSelected()); //save to file settings.save(); closeSettingsWindow(); } @FXML private void cancelClicked(ActionEvent event) { closeSettingsWindow(); } private void closeSettingsWindow() { Stage stage = (Stage) btnCancel.getScene().getWindow(); stage.close(); } }