This repository was archived by the owner on Mar 9, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 184
Expand file tree
/
Copy pathReceiveMoneyRequestController.java
More file actions
118 lines (88 loc) · 3.54 KB
/
ReceiveMoneyRequestController.java
File metadata and controls
118 lines (88 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/**
* Sample Skeleton for 'receiver_money_request.fxml' Controller Class
*/
package wallettemplate;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import net.glxn.qrgen.QRCode;
import net.glxn.qrgen.image.ImageType;
import network.thunder.core.etc.Tools;
import network.thunder.core.helper.PaymentRequest;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.io.ByteArrayInputStream;
import java.util.ResourceBundle;
public class ReceiveMoneyRequestController {
public Main.OverlayUI overlayUI;
@FXML
private ResourceBundle resources;
@FXML
private HBox topHBox;
@FXML
private TextField amount;
@FXML
private TextField FieldHash;
@FXML
private TextArea FieldAddress;
@FXML
private TextField FieldRequest;
@FXML
private ImageView ImageQR;
@FXML
private Button cancelBtn;
@FXML
void cancel (ActionEvent event) {
overlayUI.done();
}
@FXML
void initialize () {
assert topHBox != null : "fx:id=\"topHBox\" was not injected: check your FXML file 'receive_money_request.fxml'.";
assert amount != null : "fx:id=\"amount\" was not injected: check your FXML file 'receive_money_request.fxml'.";
assert FieldHash != null : "fx:id=\"FieldHash\" was not injected: check your FXML file 'receive_money_request.fxml'.";
assert FieldAddress != null : "fx:id=\"FieldAddress\" was not injected: check your FXML file 'receive_money_request.fxml'.";
assert FieldRequest != null : "fx:id=\"FieldRequest\" was not injected: check your FXML file 'receive_money_request.fxml'.";
assert ImageQR != null : "fx:id=\"ImageQR\" was not injected: check your FXML file 'receive_money_request.fxml'.";
assert cancelBtn != null : "fx:id=\"cancelBtn\" was not injected: check your FXML file 'receive_money_request.fxml'.";
amount.textProperty().addListener((observable, oldValue, newValue) -> {
update();
});
update();
}
public void update () {
if(amount.getText().equals("")) {
amount.setText("0");
}
try {
PaymentRequest paymentRequest = Main.thunderContext.receivePayment(getAmount());
byte[] payload = paymentRequest.getPayload();
FieldAddress.setText(Tools.bytesToHex(payload));
FieldHash.setText(Tools.bytesToHex(paymentRequest.paymentSecret.hash));
System.out.println(Tools.bytesToHex(payload));
final byte[] imageBytes = QRCode
.from(Tools.bytesToHex(payload))
.withSize(250, 250)
.to(ImageType.PNG)
.stream()
.toByteArray();
Image qrImage = new Image(new ByteArrayInputStream(imageBytes));
ImageQR.setImage(qrImage);
ImageQR.setEffect(new DropShadow());
StringSelection stringSelection = new StringSelection(Tools.bytesToHex(payload));
Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
clpbrd.setContents(stringSelection, null);
} catch (Exception e) {
e.printStackTrace();
}
}
private long getAmount () {
return Long.parseLong(amount.getText());
}
}