Remove proxyType

This commit is contained in:
yushijinhun
2018-07-17 19:24:53 +08:00
parent a6a1755fee
commit 8e0559fb3b
4 changed files with 7 additions and 53 deletions

View File

@@ -19,6 +19,7 @@ package org.jackhuang.hmcl.setting;
import java.io.File;
import java.lang.reflect.Modifier;
import java.net.Proxy;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Stream;
@@ -66,6 +67,7 @@ public final class Config implements Cloneable, Observable {
.registerTypeAdapter(ObservableMap.class, new ObservableMapCreator())
.registerTypeAdapterFactory(new JavaFxPropertyTypeAdapterFactory(true, true))
.registerTypeAdapter(EnumBackgroundImage.class, new EnumOrdinalDeserializer<>(EnumBackgroundImage.class)) // backward compatibility for backgroundType
.registerTypeAdapter(Proxy.Type.class, new EnumOrdinalDeserializer<>(Proxy.Type.class)) // backward compatibility for hasProxy
.setPrettyPrinting()
.create();
@@ -96,7 +98,7 @@ public final class Config implements Cloneable, Observable {
public final BooleanProperty hasProxyAuth = new SimpleBooleanProperty();
@SerializedName("proxyType")
public final IntegerProperty proxyType = new SimpleIntegerProperty();
public final ObjectProperty<Proxy.Type> proxyType = new SimpleObjectProperty<>(Proxy.Type.DIRECT);
@SerializedName("proxyHost")
public final StringProperty proxyHost = new SimpleStringProperty();

View File

@@ -1,36 +0,0 @@
/*
* Hello Minecraft! Launcher.
* Copyright (C) 2018 huangyuhui <huanghongxun2008@126.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see {http://www.gnu.org/licenses/}.
*/
package org.jackhuang.hmcl.setting;
import org.jackhuang.hmcl.util.Lang;
import java.net.Proxy;
import java.util.List;
/**
* @author huangyuhui
*/
public final class Proxies {
private Proxies() {}
public static final List<Proxy.Type> PROXIES = Lang.immutableListOf(Proxy.Type.DIRECT, Proxy.Type.HTTP, Proxy.Type.SOCKS);
public static Proxy.Type getProxyType(int index) {
return Lang.get(PROXIES, index).orElse(null);
}
}

View File

@@ -137,27 +137,15 @@ public class Settings {
return proxy;
}
private Proxy.Type proxyType = Proxies.getProxyType(ConfigHolder.CONFIG.proxyType.get());
public Proxy.Type getProxyType() {
return proxyType;
}
public void setProxyType(Proxy.Type proxyType) {
this.proxyType = proxyType;
ConfigHolder.CONFIG.proxyType.set(Proxies.PROXIES.indexOf(proxyType));
loadProxy();
}
private void loadProxy() {
String host = ConfigHolder.CONFIG.proxyHost.get();
Integer port = Lang.toIntOrNull(ConfigHolder.CONFIG.proxyPort.get());
if (!ConfigHolder.CONFIG.hasProxy.get() || StringUtils.isBlank(host) || port == null || getProxyType() == Proxy.Type.DIRECT)
if (!ConfigHolder.CONFIG.hasProxy.get() || StringUtils.isBlank(host) || port == null || ConfigHolder.CONFIG.proxyType.get() == Proxy.Type.DIRECT)
proxy = Proxy.NO_PROXY;
else {
System.setProperty("http.proxyHost", ConfigHolder.CONFIG.proxyHost.get());
System.setProperty("http.proxyPort", ConfigHolder.CONFIG.proxyPort.get());
proxy = new Proxy(proxyType, new InetSocketAddress(host, port));
proxy = new Proxy(ConfigHolder.CONFIG.proxyType.get(), new InetSocketAddress(host, port));
String user = ConfigHolder.CONFIG.proxyUser.get();
String pass = ConfigHolder.CONFIG.proxyPass.get();

View File

@@ -155,7 +155,7 @@ public final class SettingsPage extends StackPane implements DecoratorPage {
chkProxySocks.setToggleGroup(proxyConfigurationGroup);
for (Toggle toggle : proxyConfigurationGroup.getToggles())
if (toggle.getUserData() == Settings.INSTANCE.getProxyType())
if (toggle.getUserData() == ConfigHolder.CONFIG.proxyType.get())
toggle.setSelected(true);
ToggleGroup hasProxyGroup = new ToggleGroup();
@@ -171,7 +171,7 @@ public final class SettingsPage extends StackPane implements DecoratorPage {
ConfigHolder.CONFIG.hasProxy.set(newValue != chkNoProxy));
proxyConfigurationGroup.selectedToggleProperty().addListener((a, b, newValue) ->
Settings.INSTANCE.setProxyType((Proxy.Type) newValue.getUserData()));
ConfigHolder.CONFIG.proxyType.set((Proxy.Type) newValue.getUserData()));
chkProxyAuthentication.setSelected(ConfigHolder.CONFIG.hasProxyAuth.get());
chkProxyAuthentication.selectedProperty().addListener((a, b, newValue) -> ConfigHolder.CONFIG.hasProxyAuth.set(newValue));