mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-25 05:06:45 +00:00
add prevent computer sleep functionality
This commit is contained in:
parent
35b57f9d69
commit
8c0a1932cf
4 changed files with 63 additions and 1 deletions
|
@ -146,6 +146,9 @@ public class AppController implements Initializable {
|
||||||
@FXML
|
@FXML
|
||||||
private MenuItem sendToMany;
|
private MenuItem sendToMany;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private CheckMenuItem preventSleep;
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private StackPane rootStack;
|
private StackPane rootStack;
|
||||||
|
|
||||||
|
@ -289,6 +292,7 @@ public class AppController implements Initializable {
|
||||||
lockWallet.setDisable(true);
|
lockWallet.setDisable(true);
|
||||||
refreshWallet.disableProperty().bind(Bindings.or(exportWallet.disableProperty(), Bindings.or(serverToggle.disableProperty(), AppServices.onlineProperty().not())));
|
refreshWallet.disableProperty().bind(Bindings.or(exportWallet.disableProperty(), Bindings.or(serverToggle.disableProperty(), AppServices.onlineProperty().not())));
|
||||||
sendToMany.disableProperty().bind(exportWallet.disableProperty());
|
sendToMany.disableProperty().bind(exportWallet.disableProperty());
|
||||||
|
preventSleep.setSelected(Config.get().isPreventSleep());
|
||||||
|
|
||||||
setServerType(Config.get().getServerType());
|
setServerType(Config.get().getServerType());
|
||||||
serverToggle.setSelected(isConnected());
|
serverToggle.setSelected(isConnected());
|
||||||
|
@ -742,6 +746,12 @@ public class AppController implements Initializable {
|
||||||
EventManager.get().post(new BitcoinUnitChangedEvent(unit));
|
EventManager.get().post(new BitcoinUnitChangedEvent(unit));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void preventSleep(ActionEvent event) {
|
||||||
|
CheckMenuItem item = (CheckMenuItem)event.getSource();
|
||||||
|
Config.get().setPreventSleep(item.isSelected());
|
||||||
|
AppServices.get().setPreventSleep(item.isSelected());
|
||||||
|
}
|
||||||
|
|
||||||
public void openFile(File file) {
|
public void openFile(File file) {
|
||||||
if(isWalletFile(file)) {
|
if(isWalletFile(file)) {
|
||||||
openWalletFile(file, true);
|
openWalletFile(file, true);
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.sparrowwallet.sparrow;
|
||||||
|
|
||||||
import com.google.common.eventbus.Subscribe;
|
import com.google.common.eventbus.Subscribe;
|
||||||
import com.google.common.net.HostAndPort;
|
import com.google.common.net.HostAndPort;
|
||||||
import com.samourai.whirlpool.client.wallet.WhirlpoolEventService;
|
|
||||||
import com.sparrowwallet.drongo.Network;
|
import com.sparrowwallet.drongo.Network;
|
||||||
import com.sparrowwallet.drongo.address.Address;
|
import com.sparrowwallet.drongo.address.Address;
|
||||||
import com.sparrowwallet.drongo.protocol.BlockHeader;
|
import com.sparrowwallet.drongo.protocol.BlockHeader;
|
||||||
|
@ -24,6 +23,7 @@ import javafx.beans.property.SimpleBooleanProperty;
|
||||||
import javafx.beans.value.ChangeListener;
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.concurrent.ScheduledService;
|
import javafx.concurrent.ScheduledService;
|
||||||
|
import javafx.concurrent.Task;
|
||||||
import javafx.concurrent.Worker;
|
import javafx.concurrent.Worker;
|
||||||
import javafx.fxml.FXMLLoader;
|
import javafx.fxml.FXMLLoader;
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
|
@ -48,6 +48,7 @@ import org.slf4j.LoggerFactory;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.desktop.OpenFilesHandler;
|
import java.awt.desktop.OpenFilesHandler;
|
||||||
import java.awt.desktop.OpenURIHandler;
|
import java.awt.desktop.OpenURIHandler;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
|
@ -94,6 +95,8 @@ public class AppServices {
|
||||||
|
|
||||||
private TorService torService;
|
private TorService torService;
|
||||||
|
|
||||||
|
private ScheduledService<Void> preventSleepService;
|
||||||
|
|
||||||
private static Integer currentBlockHeight;
|
private static Integer currentBlockHeight;
|
||||||
|
|
||||||
private static BlockHeader latestBlockHeader;
|
private static BlockHeader latestBlockHeader;
|
||||||
|
@ -156,6 +159,7 @@ public class AppServices {
|
||||||
ratesService = createRatesService(config.getExchangeSource(), config.getFiatCurrency());
|
ratesService = createRatesService(config.getExchangeSource(), config.getFiatCurrency());
|
||||||
versionCheckService = createVersionCheckService();
|
versionCheckService = createVersionCheckService();
|
||||||
torService = createTorService();
|
torService = createTorService();
|
||||||
|
preventSleepService = createPreventSleepService();
|
||||||
|
|
||||||
onlineProperty.addListener(onlineServicesListener);
|
onlineProperty.addListener(onlineServicesListener);
|
||||||
|
|
||||||
|
@ -183,6 +187,10 @@ public class AppServices {
|
||||||
if(config.isCheckNewVersions() && Network.get() == Network.MAINNET) {
|
if(config.isCheckNewVersions() && Network.get() == Network.MAINNET) {
|
||||||
restartService(versionCheckService);
|
restartService(versionCheckService);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(config.isPreventSleep()) {
|
||||||
|
restartService(preventSleepService);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restartService(ScheduledService<?> service) {
|
private void restartService(ScheduledService<?> service) {
|
||||||
|
@ -382,6 +390,39 @@ public class AppServices {
|
||||||
return torService;
|
return torService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ScheduledService<Void> createPreventSleepService() {
|
||||||
|
ScheduledService<Void> preventSleepService = new ScheduledService<Void>() {
|
||||||
|
@Override
|
||||||
|
protected Task<Void> createTask() {
|
||||||
|
return new Task<>() {
|
||||||
|
protected Void call() {
|
||||||
|
try {
|
||||||
|
Robot robot = new Robot();
|
||||||
|
robot.keyRelease(KeyEvent.VK_F16);
|
||||||
|
} catch(Exception e) {
|
||||||
|
log.debug("Error preventing sleep", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
preventSleepService.setPeriod(Duration.minutes(1));
|
||||||
|
return preventSleepService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPreventSleep(boolean preventSleep) {
|
||||||
|
if(preventSleepService != null) {
|
||||||
|
if(preventSleep) {
|
||||||
|
restartService(preventSleepService);
|
||||||
|
} else {
|
||||||
|
preventSleepService.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isTorRunning() {
|
public static boolean isTorRunning() {
|
||||||
return Tor.getDefault() != null;
|
return Tor.getDefault() != null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ public class Config {
|
||||||
private boolean showTransactionHex = true;
|
private boolean showTransactionHex = true;
|
||||||
private boolean showLoadingLog = false;
|
private boolean showLoadingLog = false;
|
||||||
private boolean showUtxosChart = true;
|
private boolean showUtxosChart = true;
|
||||||
|
private boolean preventSleep = false;
|
||||||
private List<File> recentWalletFiles;
|
private List<File> recentWalletFiles;
|
||||||
private Integer keyDerivationPeriod;
|
private Integer keyDerivationPeriod;
|
||||||
private File hwi;
|
private File hwi;
|
||||||
|
@ -279,6 +280,14 @@ public class Config {
|
||||||
flush();
|
flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isPreventSleep() {
|
||||||
|
return preventSleep;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPreventSleep(boolean preventSleep) {
|
||||||
|
this.preventSleep = preventSleep;
|
||||||
|
}
|
||||||
|
|
||||||
public List<File> getRecentWalletFiles() {
|
public List<File> getRecentWalletFiles() {
|
||||||
return recentWalletFiles;
|
return recentWalletFiles;
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,8 @@
|
||||||
<MenuItem mnemonicParsing="false" text="Sign/Verify Message" accelerator="Shortcut+M" onAction="#signVerifyMessage"/>
|
<MenuItem mnemonicParsing="false" text="Sign/Verify Message" accelerator="Shortcut+M" onAction="#signVerifyMessage"/>
|
||||||
<MenuItem fx:id="sendToMany" mnemonicParsing="false" text="Send To Many" onAction="#sendToMany"/>
|
<MenuItem fx:id="sendToMany" mnemonicParsing="false" text="Send To Many" onAction="#sendToMany"/>
|
||||||
<MenuItem styleClass="osxHide,windowsHide" mnemonicParsing="false" text="Install Udev Rules" onAction="#installUdevRules"/>
|
<MenuItem styleClass="osxHide,windowsHide" mnemonicParsing="false" text="Install Udev Rules" onAction="#installUdevRules"/>
|
||||||
|
<SeparatorMenuItem />
|
||||||
|
<CheckMenuItem fx:id="preventSleep" mnemonicParsing="false" text="Prevent Computer Sleep" onAction="#preventSleep"/>
|
||||||
</Menu>
|
</Menu>
|
||||||
<Menu fx:id="helpMenu" mnemonicParsing="false" text="Help">
|
<Menu fx:id="helpMenu" mnemonicParsing="false" text="Help">
|
||||||
<MenuItem mnemonicParsing="false" text="Show Introduction" onAction="#showIntroduction"/>
|
<MenuItem mnemonicParsing="false" text="Show Introduction" onAction="#showIntroduction"/>
|
||||||
|
|
Loading…
Reference in a new issue