diff --git a/Dogename/dogename.iml b/Dogename/dogename.iml
index 43d2db1..36367c6 100644
--- a/Dogename/dogename.iml
+++ b/Dogename/dogename.iml
@@ -19,5 +19,9 @@
+
+
+
+
\ No newline at end of file
diff --git a/Dogename/src/main/java/me/lensferno/dogename/configs/ConfigLoader.java b/Dogename/src/main/java/me/lensferno/dogename/configs/ConfigLoader.java
index 6794aec..de21e19 100644
--- a/Dogename/src/main/java/me/lensferno/dogename/configs/ConfigLoader.java
+++ b/Dogename/src/main/java/me/lensferno/dogename/configs/ConfigLoader.java
@@ -20,8 +20,6 @@ import java.nio.charset.StandardCharsets;
public class ConfigLoader {
private final String mainConfigLocation = FilePath.toSpecificPathForm("files/Config.json");
private final String voiceConfigLocation = FilePath.toSpecificPathForm("files/VoiceConfig.json");
- //ConfigValuesBean config;
- private MainConfig mainConfig;
public String getMainConfigLocation() {
return mainConfigLocation;
@@ -31,11 +29,7 @@ public class ConfigLoader {
return voiceConfigLocation;
}
- public MainConfig getMainConfig() {
- return mainConfig;
- }
-
- public MainConfig readConfigFromFile(String fileLocation) {
+ public void readMainConfig(String fileLocation) {
//property属性应该要自定义一个json适配器才能解析出来
Gson gson = new GsonBuilder()
.registerTypeAdapter(SimpleBooleanProperty.class, new BooleanPropertyAdapter())
@@ -52,34 +46,29 @@ public class ConfigLoader {
if (!configFile.exists()) {
configFile.getParentFile().mkdirs();
configFile.createNewFile();
- mainConfig = new MainConfig();
+ GlobalConfig.mainConfig = new MainConfig();
writeMainConfigToFile(mainConfigLocation);
- return mainConfig;
+ return;
}
InputStream inputStream = new FileInputStream(configFile);
configJson = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
inputStream.close();
- mainConfig = gson.fromJson(configJson, MainConfig.class);
+ GlobalConfig.mainConfig = gson.fromJson(configJson, MainConfig.class);
- if (mainConfig == null) {
- mainConfig = new MainConfig();
+ if (GlobalConfig.mainConfig == null) {
+ GlobalConfig.mainConfig = new MainConfig();
writeMainConfigToFile(mainConfigLocation);
- return mainConfig;
}
-
} catch (Exception e) {
System.out.println("Error to load config file:" + e + "\nUse Default config.");
- mainConfig = new MainConfig();
+ GlobalConfig.mainConfig = new MainConfig();
writeMainConfigToFile(mainConfigLocation);
- return mainConfig;
}
-
- return this.mainConfig;
}
- public VoiceConfig readVoiceConfigFromFile(String fileLocation) {
+ public void loadVoiceConfig(String fileLocation) {
//property属性应该要自定义一个json适配器才能解析出来
Gson gson = new GsonBuilder()
.registerTypeAdapter(SimpleBooleanProperty.class, new BooleanPropertyAdapter())
@@ -97,31 +86,26 @@ public class ConfigLoader {
configFile.getParentFile().mkdirs();
configFile.createNewFile();
- VoicePlayer.voiceConfig = new VoiceConfig();
+ GlobalConfig.voiceConfig = new VoiceConfig();
writeVoiceConfigToFile(voiceConfigLocation);
- return VoicePlayer.voiceConfig;
+ return;
}
InputStream inputStream = new FileInputStream(configFile);
configJson = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
inputStream.close();
- VoicePlayer.voiceConfig = gson.fromJson(configJson, VoiceConfig.class);
+ GlobalConfig.voiceConfig = gson.fromJson(configJson, VoiceConfig.class);
- if (VoicePlayer.voiceConfig == null) {
- VoicePlayer.voiceConfig = new VoiceConfig();
+ if (GlobalConfig.voiceConfig == null) {
+ GlobalConfig.voiceConfig = new VoiceConfig();
writeVoiceConfigToFile(voiceConfigLocation);
- return VoicePlayer.voiceConfig;
}
-
} catch (Exception e) {
System.out.println("Error to load voice config file:" + e + "\nUse Default voice config.");
- VoicePlayer.voiceConfig = new VoiceConfig();
+ GlobalConfig.voiceConfig = new VoiceConfig();
writeVoiceConfigToFile(voiceConfigLocation);
- return VoicePlayer.voiceConfig;
}
-
- return VoicePlayer.voiceConfig;
}
private String toJSON(MainConfig config) {
@@ -154,10 +138,10 @@ public class ConfigLoader {
outputFile.createNewFile();
}
OutputStream stream = new FileOutputStream(outputFile);
- IOUtils.write(toJSON(this.mainConfig).getBytes(StandardCharsets.UTF_8), stream);
+ IOUtils.write(toJSON(GlobalConfig.mainConfig).getBytes(StandardCharsets.UTF_8), stream);
OutputStream voiceConfigFileStream = new FileOutputStream(voiceConfigFile);
- IOUtils.write(getConfigJson(VoicePlayer.voiceConfig).getBytes(StandardCharsets.UTF_8), voiceConfigFileStream);
+ IOUtils.write(getConfigJson(GlobalConfig.voiceConfig).getBytes(StandardCharsets.UTF_8), voiceConfigFileStream);
} catch (Exception e) {
System.out.println("Error in writing all config:" + e);
@@ -174,7 +158,7 @@ public class ConfigLoader {
}
OutputStream stream = new FileOutputStream(outputFile);
- IOUtils.write(toJSON(this.mainConfig).getBytes(StandardCharsets.UTF_8), stream);
+ IOUtils.write(toJSON(GlobalConfig.mainConfig).getBytes(StandardCharsets.UTF_8), stream);
} catch (Exception e) {
System.out.println("Error in writing main config:" + e);
@@ -191,7 +175,7 @@ public class ConfigLoader {
outputFile.createNewFile();
}
OutputStream voiceConfigFileStream = new FileOutputStream(voiceConfigFile);
- IOUtils.write(getConfigJson(VoicePlayer.voiceConfig).getBytes(StandardCharsets.UTF_8), voiceConfigFileStream);
+ IOUtils.write(getConfigJson(GlobalConfig.voiceConfig).getBytes(StandardCharsets.UTF_8), voiceConfigFileStream);
} catch (Exception e) {
System.out.println("Error in writing voice config:" + e);
diff --git a/Dogename/src/main/java/me/lensferno/dogename/configs/GlobalConfig.java b/Dogename/src/main/java/me/lensferno/dogename/configs/GlobalConfig.java
new file mode 100644
index 0000000..a3603de
--- /dev/null
+++ b/Dogename/src/main/java/me/lensferno/dogename/configs/GlobalConfig.java
@@ -0,0 +1,6 @@
+package me.lensferno.dogename.configs;
+
+public class GlobalConfig {
+ public static VoiceConfig voiceConfig = null;
+ public static MainConfig mainConfig = null;
+}
diff --git a/Dogename/src/main/java/me/lensferno/dogename/configs/MainConfig.java b/Dogename/src/main/java/me/lensferno/dogename/configs/MainConfig.java
index acaf510..6a0c529 100644
--- a/Dogename/src/main/java/me/lensferno/dogename/configs/MainConfig.java
+++ b/Dogename/src/main/java/me/lensferno/dogename/configs/MainConfig.java
@@ -8,9 +8,7 @@ import javafx.beans.property.SimpleStringProperty;
public class MainConfig {
// ---------------------- Default values ---------------------------------------------------------
-
@Expose
- public static final boolean DEFAULT_NAME_CHOOSE = true;
public static final int METHOD_NAME = 0; // 名字挑选法
public static final int METHOD_NUMBER = 1; // 数字挑选法
public static final int DEFAULT_MAX_TOTAL_COUNT = 120; // 默认轮回次数:120
@@ -21,13 +19,10 @@ public class MainConfig {
public static final boolean DEFAULT_NEW_ALGO = true; // 默认使用新算法"Java sec random"
public static final boolean DEFAULT_VOICE_PLAY = true; // 默认使用语音播报
public static final boolean DEFAULT_SHOW_SAYING = true;
- private final int currentVersion = 3;
// ----------------------Properties----------------------------------------------------------------
- private final SimpleBooleanProperty nameChoose;
-
private final SimpleBooleanProperty randomCount; // 挑选次数是否随机
- private final SimpleBooleanProperty passSelectedResult; // 是否忽略已经被点过的名字/数字
+ private final SimpleBooleanProperty ignoreSelectedResult; // 是否忽略已经被点过的名字/数字
private final SimpleIntegerProperty chooseMethod; // 挑选方式: 0->名字挑选法 1->数字挑选法
private final SimpleIntegerProperty maxTotalCount; // 挑选轮回次数
@@ -47,10 +42,9 @@ public class MainConfig {
// -------------------------- 初始化 --------------------------------------------------------------
public MainConfig() {
randomCount = new SimpleBooleanProperty(DEFAULT_RANDOM_TIMES);
- passSelectedResult = new SimpleBooleanProperty(DEFAULT_IGNORE_PAST);
+ ignoreSelectedResult = new SimpleBooleanProperty(DEFAULT_IGNORE_PAST);
chooseMethod = new SimpleIntegerProperty(METHOD_NAME);
- nameChoose = new SimpleBooleanProperty(DEFAULT_NAME_CHOOSE);
maxTotalCount = new SimpleIntegerProperty(DEFAULT_MAX_TOTAL_COUNT);
@@ -68,19 +62,6 @@ public class MainConfig {
}
// -------------------------- Getters and Setters ---------------------------------------------
-
- public boolean getNameChoose() {
- return nameChoose.get();
- }
-
- public void setNameChoose(boolean nameChoose) {
- this.nameChoose.set(nameChoose);
- }
-
- public SimpleBooleanProperty nameChooseProperty() {
- return nameChoose;
- }
-
public boolean getRandomCount() {
return randomCount.get();
}
@@ -93,16 +74,16 @@ public class MainConfig {
return randomCount;
}
- public boolean getPassSelectedResult() {
- return passSelectedResult.get();
+ public boolean getIgnoreSelectedResult() {
+ return ignoreSelectedResult.get();
}
- public void setPassSelectedResult(boolean passSelectedResult) {
- this.passSelectedResult.set(passSelectedResult);
+ public void setIgnoreSelectedResult(boolean ignoreSelectedResult) {
+ this.ignoreSelectedResult.set(ignoreSelectedResult);
}
- public SimpleBooleanProperty passSelectedResultProperty() {
- return passSelectedResult;
+ public SimpleBooleanProperty ignoreSelectedResultProperty() {
+ return ignoreSelectedResult;
}
public int getChooseMethod() {
@@ -212,9 +193,4 @@ public class MainConfig {
public SimpleBooleanProperty showSayingProperty() {
return showSaying;
}
-
- public int getCurrentConfigVersion() {
- return currentVersion;
- }
-
}
diff --git a/Dogename/src/main/java/me/lensferno/dogename/controllers/MainInterfaceController.java b/Dogename/src/main/java/me/lensferno/dogename/controllers/MainInterfaceController.java
index f291b5b..0b545fd 100644
--- a/Dogename/src/main/java/me/lensferno/dogename/controllers/MainInterfaceController.java
+++ b/Dogename/src/main/java/me/lensferno/dogename/controllers/MainInterfaceController.java
@@ -16,17 +16,15 @@ import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import me.lensferno.dogename.configs.ConfigLoader;
+import me.lensferno.dogename.configs.GlobalConfig;
import me.lensferno.dogename.configs.MainConfig;
-import me.lensferno.dogename.configs.VoiceConfig;
import me.lensferno.dogename.data.Data;
import me.lensferno.dogename.data.History;
import me.lensferno.dogename.select.Selector;
import me.lensferno.dogename.utils.DialogMaker;
import me.lensferno.dogename.utils.FilePath;
import me.lensferno.dogename.utils.ocr.OcrTool;
-import me.lensferno.dogename.voice.VoicePlayer;
-import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
@@ -38,7 +36,6 @@ public final class MainInterfaceController {
OcrTool ocrTool = null;
History history = new History();
- MainConfig mainConfig;
Random random = new Random();
Data data = new Data();
Selector selector = new Selector();
@@ -72,14 +69,15 @@ public final class MainInterfaceController {
history.loadHistory();
}
+ private final ToggleGroup toggleGroup = new ToggleGroup();
public void bindProperties() {
- nameChoose.selectedProperty().bindBidirectional(mainConfig.nameChooseProperty());
-
- numbChoose.selectedProperty().bind(mainConfig.nameChooseProperty().not());
- numbChoose.selectedProperty().unbind();
+ nameChoose.setToggleGroup(toggleGroup);
+ numbChoose.setToggleGroup(toggleGroup);
- mainConfig.nameChooseProperty().addListener((observable, oldValue, newValue) -> {
- mainConfig.setChooseMethod(mainConfig.getNameChoose() ? MainConfig.METHOD_NAME : MainConfig.METHOD_NUMBER);
+ toggleGroup.selectToggle(GlobalConfig.mainConfig.getChooseMethod() == MainConfig.METHOD_NAME ? nameChoose : numbChoose);
+ toggleGroup.selectedToggleProperty().addListener((observable, oldValue, newValue) -> {
+ GlobalConfig.mainConfig.setChooseMethod(newValue == nameChoose ? MainConfig.METHOD_NAME : MainConfig.METHOD_NUMBER);
+ System.out.println("change!"+(newValue == nameChoose));
});
}
@@ -88,8 +86,8 @@ public final class MainInterfaceController {
}
public void setUpConfig(ConfigLoader configLoader) {
- mainConfig = configLoader.readConfigFromFile(FilePath.toSpecificPathForm("files/Config.json"));
- VoicePlayer.voiceConfig = configLoader.readVoiceConfigFromFile(FilePath.toSpecificPathForm("files/VoiceConfig.json"));
+ configLoader.readMainConfig(FilePath.toSpecificPathForm("files/Config.json"));
+ configLoader.loadVoiceConfig(FilePath.toSpecificPathForm("files/VoiceConfig.json"));
}
@FXML
@@ -116,9 +114,8 @@ public final class MainInterfaceController {
return;
}
NumberSettingsPaneController numberSettingsPaneController = new NumberSettingsPaneController(data);
- numberSettingsPaneController.bindProperties(mainConfig);
+ numberSettingsPaneController.bindProperties(GlobalConfig.mainConfig);
new DialogMaker(rootPane).createDialogWithOneBtn("调整数字", numberSettingsPaneController);
-
}
@FXML
@@ -138,7 +135,7 @@ public final class MainInterfaceController {
miniStage.initStyle(StageStyle.UNDECORATED);
MiniPaneController miniPaneController = loader.getController();
- miniPaneController.setBase(data, mainConfig, selector);
+ miniPaneController.setBase(data, selector);
Stage currentStage = (Stage) anPaiBtn.getScene().getWindow();
miniPaneController.setOldStage(currentStage);
@@ -154,11 +151,10 @@ public final class MainInterfaceController {
@FXML
void showSettings(ActionEvent event) {
-
SettingsPaneController settingsPaneController = new SettingsPaneController();
settingsPaneController.setToggleGroup();
- settingsPaneController.bindProperties(mainConfig);
+ settingsPaneController.bindProperties();
settingsPaneController.setRootPane(rootPane);
@@ -177,7 +173,7 @@ public final class MainInterfaceController {
public void init() {
- selector.initialVariable(mainConfig, data, history, upperLabel.textProperty(), downLabel.textProperty());
+ selector.initialVariable(data, history, upperLabel.textProperty(), downLabel.textProperty());
selector.addStoppedEventListener((observableValue, oldValue, stop) -> {
if (stop) {
anPaiBtn.setText("安排一下");
@@ -200,11 +196,11 @@ public final class MainInterfaceController {
return;
}
- if (mainConfig.getRandomCount()) {
- mainConfig.setMaxTotalCount(100 + random.nextInt(151));
+ if (GlobalConfig.mainConfig.getRandomCount()) {
+ GlobalConfig.mainConfig.setMaxTotalCount(100 + random.nextInt(151));
}
- if (mainConfig.getNameChoose()) {
+ if (GlobalConfig.mainConfig.getChooseMethod() == MainConfig.METHOD_NAME) {
runNameMode();
} else {
runNumberMode();
@@ -225,9 +221,9 @@ public final class MainInterfaceController {
return;
}
- if (data.compareNameIgnoreList() && mainConfig.getPassSelectedResult()) {
+ if (data.compareNameIgnoreList() && GlobalConfig.mainConfig.getIgnoreSelectedResult()) {
- if (mainConfig.getEqualMode()) {
+ if (GlobalConfig.mainConfig.getEqualMode()) {
new DialogMaker(rootPane).createDialogWithOKAndCancel("啊?", "全部名字都被点完啦!\n要把名字的忽略列表重置吗?", e -> data.clearNameIgnoreList());
} else {
new DialogMaker(rootPane).createMessageDialog("啊?", "全部名字都被点完啦!\n请多添加几个名字 或 点击“机会均等”的“重置”按钮。");
@@ -244,16 +240,16 @@ public final class MainInterfaceController {
try {
- int minNumber = Integer.parseInt(mainConfig.getMinNumber());
- int maxNumber = Integer.parseInt(mainConfig.getMaxNumber());
+ int minNumber = Integer.parseInt(GlobalConfig.mainConfig.getMinNumber());
+ int maxNumber = Integer.parseInt(GlobalConfig.mainConfig.getMaxNumber());
if (maxNumber - minNumber <= 0) {
new DialogMaker(rootPane).createMessageDialog("嗯哼?", "数字要前小后大啊~");
return;
}
- if (data.getNumberIgnoreListSize() >= (maxNumber - minNumber + 1) && mainConfig.getPassSelectedResult()) {
- if (mainConfig.getEqualMode()) {
+ if (data.getNumberIgnoreListSize() >= (maxNumber - minNumber + 1) && GlobalConfig.mainConfig.getIgnoreSelectedResult()) {
+ if (GlobalConfig.mainConfig.getEqualMode()) {
new DialogMaker(rootPane).createDialogWithOKAndCancel("啊?", "全部数字都被点完啦!\n要把数字的忽略列表重置吗?", e -> data.clearNumberIgnoreList());
} else {
new DialogMaker(rootPane).createMessageDialog("啊?", "全部数字都被点完啦!\n请扩大数字范围 或 点击“机会均等”的“重置”按钮。");
@@ -280,6 +276,6 @@ public final class MainInterfaceController {
}
public MainConfig getMainConfig() {
- return mainConfig;
+ return GlobalConfig.mainConfig;
}
}
diff --git a/Dogename/src/main/java/me/lensferno/dogename/controllers/MiniPaneController.java b/Dogename/src/main/java/me/lensferno/dogename/controllers/MiniPaneController.java
index a0bde71..c9e40c6 100644
--- a/Dogename/src/main/java/me/lensferno/dogename/controllers/MiniPaneController.java
+++ b/Dogename/src/main/java/me/lensferno/dogename/controllers/MiniPaneController.java
@@ -10,6 +10,7 @@ import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TouchEvent;
import javafx.stage.Stage;
+import me.lensferno.dogename.configs.GlobalConfig;
import me.lensferno.dogename.configs.MainConfig;
import me.lensferno.dogename.controllers.WindowListeners.MoveWindowByMouse;
import me.lensferno.dogename.controllers.WindowListeners.MoveWindowByTouch;
@@ -32,13 +33,8 @@ public class MiniPaneController {
private JFXButton miniModeBtn;
private final Random random = new Random();
private Data data;
- private MainConfig mainConfig;
private Selector selector = new Selector();
- public Stage getOldStage() {
- return oldStage;
- }
-
public void setOldStage(Stage oldStage) {
this.oldStage = oldStage;
}
@@ -51,19 +47,16 @@ public class MiniPaneController {
this.currentStage = currentStage;
}
- public void setBase(Data data, MainConfig mainConfig, Selector selector) {
+ public void setBase(Data data, Selector selector) {
this.data = data;
- this.mainConfig = mainConfig;
this.selector = selector;
this.selector.setLabelTexts(chosenNameLabel.textProperty());
- this.oldTextProperties = oldTextProperties;
}
@FXML
void recoverMode(ActionEvent event) {
- this.oldStage.setOnShown((e) -> {
- selector.setLabelTexts(oldTextProperties);
- });
+ // todo: 待修复:界面恢复后label无法正常显示名字
+ this.oldStage.setOnShown((e) -> selector.setLabelTexts(oldTextProperties));
this.oldStage.show();
currentStage.close();
@@ -100,11 +93,11 @@ public class MiniPaneController {
return;
}
- if (mainConfig.getRandomCount()) {
- mainConfig.setMaxTotalCount(100 + random.nextInt(151));
+ if (GlobalConfig.mainConfig.getRandomCount()) {
+ GlobalConfig.mainConfig.setMaxTotalCount(100 + random.nextInt(151));
}
- if (mainConfig.getNameChoose()) {
+ if (GlobalConfig.mainConfig.getChooseMethod() == MainConfig.METHOD_NAME) {
runNameMode();
} else {
runNumberMode();
@@ -118,7 +111,7 @@ public class MiniPaneController {
return;
}
- if (data.compareNameIgnoreList() && mainConfig.getPassSelectedResult()) {
+ if (data.compareNameIgnoreList() && GlobalConfig.mainConfig.getIgnoreSelectedResult()) {
return;
}
@@ -131,14 +124,14 @@ public class MiniPaneController {
try {
- int minNumber = Integer.parseInt(mainConfig.getMinNumber());
- int maxNumber = Integer.parseInt(mainConfig.getMaxNumber());
+ int minNumber = Integer.parseInt(GlobalConfig.mainConfig.getMinNumber());
+ int maxNumber = Integer.parseInt(GlobalConfig.mainConfig.getMaxNumber());
if (maxNumber - minNumber <= 0) {
return;
}
- if (data.getNumberIgnoreListSize() >= (maxNumber - minNumber + 1) && mainConfig.getPassSelectedResult()) {
+ if (data.getNumberIgnoreListSize() >= (maxNumber - minNumber + 1) && GlobalConfig.mainConfig.getIgnoreSelectedResult()) {
return;
}
diff --git a/Dogename/src/main/java/me/lensferno/dogename/controllers/SettingsPaneController.java b/Dogename/src/main/java/me/lensferno/dogename/controllers/SettingsPaneController.java
index caf9d5e..bf93d83 100644
--- a/Dogename/src/main/java/me/lensferno/dogename/controllers/SettingsPaneController.java
+++ b/Dogename/src/main/java/me/lensferno/dogename/controllers/SettingsPaneController.java
@@ -9,15 +9,12 @@ import javafx.fxml.FXMLLoader;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
-import me.lensferno.dogename.configs.MainConfig;
-import me.lensferno.dogename.configs.VoiceConfig;
+import me.lensferno.dogename.configs.GlobalConfig;
import me.lensferno.dogename.data.Data;
import me.lensferno.dogename.utils.DialogMaker;
-import me.lensferno.dogename.voice.VoicePlayer;
public class SettingsPaneController extends VBox {
- MainConfig mainConfig;
Pane rootPane;
Data data;
@@ -34,9 +31,9 @@ public class SettingsPaneController extends VBox {
@FXML
private JFXCheckBox equalModeBtn;
@FXML
- private JFXRadioButton ignoreOnce;
+ private JFXRadioButton ignoreSelectedResultBtn;
@FXML
- private JFXRadioButton chooseOnce;
+ private JFXRadioButton notIgnoreSelectedResultBtn;
@FXML
private JFXRadioButton randomTimes;
@FXML
@@ -53,47 +50,48 @@ public class SettingsPaneController extends VBox {
}
}
- public void setMainConfig(MainConfig mainConfig) {
- this.mainConfig = mainConfig;
- }
-
public void setRootPane(Pane rootPane) {
this.rootPane = rootPane;
}
- public void bindProperties(MainConfig mainConfig) {
- setMainConfig(mainConfig);
-
- ignoreOnce.selectedProperty().bindBidirectional(mainConfig.passSelectedResultProperty());
- chooseOnce.setSelected(!mainConfig.getPassSelectedResult());
+ private final ToggleGroup chooseRuleToggleGroup = new ToggleGroup();
+ private final ToggleGroup chooseCountRuleToggleGroup = new ToggleGroup();
- randomTimes.selectedProperty().bindBidirectional(mainConfig.randomCountProperty());
- fixedTimes.setSelected(!mainConfig.getRandomCount());
+ public void bindProperties() {
+ ignoreSelectedResultBtn.setToggleGroup(chooseRuleToggleGroup);
+ notIgnoreSelectedResultBtn.setToggleGroup(chooseRuleToggleGroup);
+ chooseRuleToggleGroup.selectToggle(GlobalConfig.mainConfig.getIgnoreSelectedResult() ? ignoreSelectedResultBtn : notIgnoreSelectedResultBtn);
+ chooseRuleToggleGroup.selectedToggleProperty().addListener((observable, oldValue, newValue) ->
+ GlobalConfig.mainConfig.setIgnoreSelectedResult(newValue == ignoreSelectedResultBtn));
- equalModeBtn.selectedProperty().bindBidirectional(mainConfig.equalModeProperty());
+ GlobalConfig.mainConfig.ignoreSelectedResultProperty().addListener((observable, oldValue, isIgnorePast) -> {
+ if (!isIgnorePast) {
+ //如果“忽略被点过的名字”选项被取消后就把机会均等模式的按钮给取消掉
+ equalModeBtn.setSelected(false);
+ }
+ });
- newAlgoBtn.selectedProperty().bindBidirectional(mainConfig.secureRandomProperty());
+ randomTimes.setToggleGroup(chooseCountRuleToggleGroup);
+ fixedTimes.setToggleGroup(chooseCountRuleToggleGroup);
+ chooseCountRuleToggleGroup.selectToggle(GlobalConfig.mainConfig.getRandomCount() ? randomTimes : fixedTimes);
+ chooseCountRuleToggleGroup.selectedToggleProperty().addListener((observable, oldValue, newValue) ->
+ GlobalConfig.mainConfig.setRandomCount(newValue == randomTimes));
- voicePlayBtn.selectedProperty().bindBidirectional(mainConfig.voicePlayProperty());
+ newAlgoBtn.selectedProperty().bindBidirectional(GlobalConfig.mainConfig.secureRandomProperty());
- cycleTimesBar.valueProperty().bindBidirectional(mainConfig.maxTotalCountProperty());
+ voicePlayBtn.selectedProperty().bindBidirectional(GlobalConfig.mainConfig.voicePlayProperty());
- speedBar.valueProperty().bindBidirectional(mainConfig.speedProperty());
+ cycleTimesBar.valueProperty().bindBidirectional(GlobalConfig.mainConfig.maxTotalCountProperty());
- showSayingBtn.selectedProperty().bindBidirectional(mainConfig.showSayingProperty());
+ speedBar.valueProperty().bindBidirectional(GlobalConfig.mainConfig.speedProperty());
- mainConfig.passSelectedResultProperty().addListener((observable, oldValue, isIgnorePast) -> {
- if (!isIgnorePast) {
- //如果 忽略被点过的名字 被取消后就把机会均等模式的按钮给取消掉
- equalModeBtn.setSelected(false);
- }
- });
+ showSayingBtn.selectedProperty().bindBidirectional(GlobalConfig.mainConfig.showSayingProperty());
}
public void setToggleGroup() {
ToggleGroup pastGroup = new ToggleGroup();
- chooseOnce.setToggleGroup(pastGroup);
- ignoreOnce.setToggleGroup(pastGroup);
+ notIgnoreSelectedResultBtn.setToggleGroup(pastGroup);
+ ignoreSelectedResultBtn.setToggleGroup(pastGroup);
ToggleGroup fixedTimesGroup = new ToggleGroup();
randomTimes.setToggleGroup(fixedTimesGroup);
@@ -123,7 +121,7 @@ public class SettingsPaneController extends VBox {
@FXML
void equalBtnAction(ActionEvent event) {
- if (!mainConfig.getPassSelectedResult()) {
+ if (!GlobalConfig.mainConfig.getIgnoreSelectedResult()) {
equalModeBtn.setSelected(false);
new DialogMaker(rootPane).createMessageDialog("且慢",
"无法在“概率均分”的模式下使用,如需使用请在“人人有份”模式下启用。");
diff --git a/Dogename/src/main/java/me/lensferno/dogename/controllers/VoiceSettingsPaneController.java b/Dogename/src/main/java/me/lensferno/dogename/controllers/VoiceSettingsPaneController.java
index 94c9224..2b72e15 100644
--- a/Dogename/src/main/java/me/lensferno/dogename/controllers/VoiceSettingsPaneController.java
+++ b/Dogename/src/main/java/me/lensferno/dogename/controllers/VoiceSettingsPaneController.java
@@ -12,6 +12,7 @@ import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
+import me.lensferno.dogename.configs.GlobalConfig;
import me.lensferno.dogename.configs.VoiceConfig;
import me.lensferno.dogename.utils.DialogMaker;
import me.lensferno.dogename.voice.VoicePlayer;
@@ -56,7 +57,7 @@ public class VoiceSettingsPaneController extends VBox {
}
if (speakerList.isEmpty()) {
speakerList.addAll(
- "度小宇=1", "度小美=0", "度逍遥=3", "度丫丫=4"
+ "度小宇", "度小美", "度逍遥", "度丫丫"
// 非高级API用户,这些精品音频库用不了(等把“高级设置”弄出来再说吧...)
/*, "度博文=106", "度小童=110", "度小萌=111", "度米朵=103", "度小娇=5"*/);
}
@@ -74,20 +75,20 @@ public class VoiceSettingsPaneController extends VBox {
audioFormatMap.put(VoiceConfig.AUDIO_FORMAT_WAV, wavFormatButton);
audioFormatMap.put(VoiceConfig.AUDIO_FORMAT_MP3, mp3FormatButton);
- audioFormatToggleGroup.selectToggle(audioFormatMap.get(VoicePlayer.voiceConfig.getAudioFormat()));
+ audioFormatToggleGroup.selectToggle(audioFormatMap.get(GlobalConfig.voiceConfig.getAudioFormat()));
audioFormatToggleGroup.selectedToggleProperty().addListener((observable, oldValue, selectBtn) ->
- VoicePlayer.voiceConfig.setAudioFormat(selectBtn.equals(wavFormatButton) ? VoiceConfig.AUDIO_FORMAT_WAV : VoiceConfig.AUDIO_FORMAT_MP3));
+ GlobalConfig.voiceConfig.setAudioFormat(selectBtn.equals(wavFormatButton) ? VoiceConfig.AUDIO_FORMAT_WAV : VoiceConfig.AUDIO_FORMAT_MP3));
- speakerSelectBar.getSelectionModel().select(VoicePlayer.voiceConfig.getSpeaker());
+ speakerSelectBar.getSelectionModel().select(GlobalConfig.voiceConfig.getSpeaker());
speakerSelectBar.valueProperty().addListener((observable, oldValue, newValue) -> {
int selectedSpeakerIndex = speakerSelectBar.getSelectionModel().getSelectedIndex();
- VoicePlayer.voiceConfig.setSpeakerIdString(speakers[selectedSpeakerIndex]);
- VoicePlayer.voiceConfig.setSpeaker(selectedSpeakerIndex);
+ GlobalConfig.voiceConfig.setSpeakerIdString(speakers[selectedSpeakerIndex]);
+ GlobalConfig.voiceConfig.setSpeaker(selectedSpeakerIndex);
});
- voiceSpeedBar.valueProperty().bindBidirectional(VoicePlayer.voiceConfig.speedProperty());
- intonationBar.valueProperty().bindBidirectional(VoicePlayer.voiceConfig.intonationProperty());
+ voiceSpeedBar.valueProperty().bindBidirectional(GlobalConfig.voiceConfig.speedProperty());
+ intonationBar.valueProperty().bindBidirectional(GlobalConfig.voiceConfig.intonationProperty());
}
@FXML
diff --git a/Dogename/src/main/java/me/lensferno/dogename/select/Selector.java b/Dogename/src/main/java/me/lensferno/dogename/select/Selector.java
index 7a68e51..b72c91b 100644
--- a/Dogename/src/main/java/me/lensferno/dogename/select/Selector.java
+++ b/Dogename/src/main/java/me/lensferno/dogename/select/Selector.java
@@ -4,6 +4,7 @@ import javafx.animation.AnimationTimer;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
+import me.lensferno.dogename.configs.GlobalConfig;
import me.lensferno.dogename.configs.MainConfig;
import me.lensferno.dogename.configs.VoiceConfig;
import me.lensferno.dogename.data.Data;
@@ -24,10 +25,9 @@ public final class Selector {
public void initialVoicePlayer() {
TokenManager tokenManager = new TokenManager();
- VoiceConfig voiceConfig = new VoiceConfig();
tokenManager.init();
if (tokenManager.getTokenStatus() == TokenManager.TOKEN_OK) {
- voicePlayer = new VoicePlayer(tokenManager.getToken(), voiceConfig);
+ voicePlayer = new VoicePlayer(tokenManager.getToken());
}
}
@@ -43,8 +43,8 @@ public final class Selector {
processor.stopProcess();
}
- public void initialVariable(MainConfig config, Data data, History history, StringProperty... labelTexts) {
- processor.initialVariable(config, voicePlayer, data, history, labelTexts);
+ public void initialVariable(Data data, History history, StringProperty... labelTexts) {
+ processor.initialVariable(voicePlayer, data, history, labelTexts);
}
public boolean isWorkerRunning() {
@@ -61,13 +61,10 @@ public final class Selector {
// ---------------------------------------------------
static class Processor extends AnimationTimer {
-
- MainConfig config = null;
private Worker coreWorker;
- protected void initialVariable(MainConfig config, VoicePlayer voicePlayer, Data data, History history, StringProperty... labelTexts) {
- coreWorker = new Worker(labelTexts, config, data, history, voicePlayer);
- this.config = config;
+ protected void initialVariable(VoicePlayer voicePlayer, Data data, History history, StringProperty... labelTexts) {
+ coreWorker = new Worker(labelTexts, data, history, voicePlayer);
}
protected void setWorkerLabelTexts(StringProperty... labelTexts) {
@@ -75,8 +72,8 @@ public final class Selector {
}
protected void updateNewValue() {
- coreWorker.setSpeed(100 - config.getSpeed());
- coreWorker.setMaxTotalCount(config.getMaxTotalCount());
+ coreWorker.setSpeed(100 - GlobalConfig.mainConfig.getSpeed());
+ coreWorker.setMaxTotalCount(GlobalConfig.mainConfig.getMaxTotalCount());
}
protected SimpleBooleanProperty stoppedIndicatorProperty() {
@@ -100,12 +97,10 @@ public final class Selector {
}
public void setNumberRange() {
- int minNumber = Integer.parseInt(config.getMinNumber());
- int maxNumber = Integer.parseInt(config.getMaxNumber());
+ int minNumber = Integer.parseInt(GlobalConfig.mainConfig.getMinNumber());
+ int maxNumber = Integer.parseInt(GlobalConfig.mainConfig.getMaxNumber());
coreWorker.setNumberRange(minNumber, maxNumber);
}
-
}
-
}
diff --git a/Dogename/src/main/java/me/lensferno/dogename/select/core/Worker.java b/Dogename/src/main/java/me/lensferno/dogename/select/core/Worker.java
index d81e8e3..a5dea72 100644
--- a/Dogename/src/main/java/me/lensferno/dogename/select/core/Worker.java
+++ b/Dogename/src/main/java/me/lensferno/dogename/select/core/Worker.java
@@ -2,8 +2,8 @@ package me.lensferno.dogename.select.core;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.StringProperty;
+import me.lensferno.dogename.configs.GlobalConfig;
import me.lensferno.dogename.configs.MainConfig;
-import me.lensferno.dogename.configs.VoiceConfig;
import me.lensferno.dogename.data.Data;
import me.lensferno.dogename.data.History;
import me.lensferno.dogename.utils.Random;
@@ -14,7 +14,6 @@ public final class Worker {
private final Random randomNumber = new Random();
private final SimpleBooleanProperty stoppedIndicator = new SimpleBooleanProperty(true);
- private final MainConfig config;
private final Data data;
private final History history;
private final VoicePlayer voicePlayer;
@@ -40,9 +39,8 @@ public final class Worker {
private boolean continueSelecting = false;
private int resultLabelId = 0;
- public Worker(StringProperty[] labelTexts, MainConfig config, Data data, History history, VoicePlayer voicePlayer) {
+ public Worker(StringProperty[] labelTexts, Data data, History history, VoicePlayer voicePlayer) {
this.labelTexts = labelTexts;
- this.config = config;
this.data = data;
this.history = history;
this.voicePlayer = voicePlayer;
@@ -69,8 +67,8 @@ public final class Worker {
// 如果不是这三种情况就选到符合其中一种情况为止
// 由于后两者在安排进程中不可能改变,因此继续挑选后只有选中的结果不在忽略名单中才会结束挑选
// 若忽略名单已满(名单中数量=总的名单数量),点击“安排一下”时会提示已满,无法再进行挑选,因此在运行时总有 忽略名单<总名单,总有名字不在忽略列表中,不会死循环,放心吧
- boolean resultIgnored = (config.getChooseMethod() == MainConfig.METHOD_NAME) ? (data.checkNameIgnored(selectedResult)) : (data.checkNumberIgnored(selectedResult));
- if (!resultIgnored || !config.getPassSelectedResult() || forceStop) {
+ boolean resultIgnored = (GlobalConfig.mainConfig.getChooseMethod() == MainConfig.METHOD_NAME) ? (data.checkNameIgnored(selectedResult)) : (data.checkNumberIgnored(selectedResult));
+ if (!resultIgnored || !GlobalConfig.mainConfig.getIgnoreSelectedResult() || forceStop) {
this.stopSelect();
finalResult = true;
return;
@@ -83,25 +81,25 @@ public final class Worker {
resultLabelId = counter.getNewResultLabelId();
finalResult = false;
- this.selectedResult = this.pick(config.getChooseMethod());
+ this.selectedResult = this.pick(GlobalConfig.mainConfig.getChooseMethod());
}
public void stopSelect() {
- if (config.getPassSelectedResult()) {
- if (config.nameChooseProperty().getValue()) {
+ if (GlobalConfig.mainConfig.getIgnoreSelectedResult()) {
+ if (GlobalConfig.mainConfig.getChooseMethod() == MainConfig.METHOD_NAME) {
data.addNameToIgnoreList(selectedResult);
} else {
data.addNumberToIgnoreList(selectedResult);
}
}
- if (config.getEqualMode()) {
+ if (GlobalConfig.mainConfig.getEqualMode()) {
data.writeIgnoreList(Data.IGNORELIST_ALL);
}
history.addHistory(selectedResult);
- if (config.getVoicePlay() && voicePlayer != null) {
+ if (GlobalConfig.mainConfig.getVoicePlay() && voicePlayer != null) {
voicePlayer.playVoice(selectedResult);
}
@@ -114,9 +112,9 @@ public final class Worker {
private String pick(int selectMethod) {
switch (selectMethod) {
case MainConfig.METHOD_NAME:
- return data.randomGet(config.getSecureRandom());
+ return data.randomGet(GlobalConfig.mainConfig.getSecureRandom());
case MainConfig.METHOD_NUMBER:
- randomNumber.setUseSecureRandom(config.getSecureRandom());
+ randomNumber.setUseSecureRandom(GlobalConfig.mainConfig.getSecureRandom());
return String.valueOf(randomNumber.getRandomNumber(numberRange[MIN_NUMBER], numberRange[MAX_NUMBER]));
default:
return "(´・ω・`)?";
diff --git a/Dogename/src/main/java/me/lensferno/dogename/voice/VoicePlayer.java b/Dogename/src/main/java/me/lensferno/dogename/voice/VoicePlayer.java
index 6f8a338..f2d57a4 100644
--- a/Dogename/src/main/java/me/lensferno/dogename/voice/VoicePlayer.java
+++ b/Dogename/src/main/java/me/lensferno/dogename/voice/VoicePlayer.java
@@ -1,6 +1,7 @@
package me.lensferno.dogename.voice;
import javazoom.spi.mpeg.sampled.file.MpegAudioFileReader;
+import me.lensferno.dogename.configs.GlobalConfig;
import me.lensferno.dogename.configs.VoiceConfig;
import me.lensferno.dogename.utils.FilePath;
import me.lensferno.dogename.utils.IOUtil;
@@ -17,23 +18,20 @@ public class VoicePlayer {
public static final String cachePath = FilePath.toSpecificPathForm("caches/voice/");
private final Token token;
-
- public static VoiceConfig voiceConfig;
-
- public VoicePlayer(Token token, VoiceConfig voiceConfig) {
+
+ public VoicePlayer(Token token) {
this.token = token;
- VoicePlayer.voiceConfig = voiceConfig;
}
public void playVoice(String name) {
- String speaker = voiceConfig.getSpeakerIdString();
- String intonation = String.valueOf(voiceConfig.getIntonation());
- String speed = String.valueOf(voiceConfig.getSpeed());
+ String speaker = GlobalConfig.voiceConfig.getSpeakerIdString();
+ String intonation = String.valueOf(GlobalConfig.voiceConfig.getIntonation());
+ String speed = String.valueOf(GlobalConfig.voiceConfig.getSpeed());
String cacheName = String.format("%s_%s_%s_%s", name, speaker, speed, intonation);
- File cache = new File(String.format("%s%s.%s", cachePath, cacheName, VoiceConfig.getAudioFileSuffix(voiceConfig.getAudioFormat())));
+ File cache = new File(String.format("%s%s.%s", cachePath, cacheName, VoiceConfig.getAudioFileSuffix(GlobalConfig.voiceConfig.getAudioFormat())));
new Thread(() -> {
if (!cache.exists()) {
@@ -59,7 +57,7 @@ public class VoicePlayer {
speed,
intonation,
speaker,
- voiceConfig.getAudioFormat(),
+ GlobalConfig.voiceConfig.getAudioFormat(),
URLEncoder.encode(name, "UTF-8")
);
@@ -94,12 +92,12 @@ public class VoicePlayer {
private void playSound(File file) {
try {
AudioInputStream sourceAudioInputStream;
- if (voiceConfig.getAudioFormat() == VoiceConfig.AUDIO_FORMAT_WAV) {
+ if (GlobalConfig.voiceConfig.getAudioFormat() == VoiceConfig.AUDIO_FORMAT_WAV) {
sourceAudioInputStream = AudioSystem.getAudioInputStream(file);
} else {
sourceAudioInputStream = new MpegAudioFileReader().getAudioInputStream(file);
}
-
+
AudioFormat sourceFormat = sourceAudioInputStream.getFormat();
AudioFormat targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
sourceFormat.getSampleRate(), 16, sourceFormat.getChannels(),
diff --git a/Dogename/src/main/resources/me/lensferno/dogename/FXMLs/SettingsPane.fxml b/Dogename/src/main/resources/me/lensferno/dogename/FXMLs/SettingsPane.fxml
index 6d6954f..0454aff 100644
--- a/Dogename/src/main/resources/me/lensferno/dogename/FXMLs/SettingsPane.fxml
+++ b/Dogename/src/main/resources/me/lensferno/dogename/FXMLs/SettingsPane.fxml
@@ -1,22 +1,24 @@
-
-
-
-
-
+
+
+
+
+
-
+
+
+
-
+
-
+
-
+
@@ -38,7 +40,7 @@
-
+