aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pages/Transfer.qml61
-rw-r--r--src/libwalletqt/Wallet.cpp8
-rw-r--r--src/libwalletqt/Wallet.h4
3 files changed, 73 insertions, 0 deletions
diff --git a/pages/Transfer.qml b/pages/Transfer.qml
index 86749aba..af0a12c7 100644
--- a/pages/Transfer.qml
+++ b/pages/Transfer.qml
@@ -900,6 +900,32 @@ Rectangle {
AdvancedOptionsItem {
visible: persistentSettings.transferShowAdvanced && appWindow.walletMode >= 2
+ title: qsTr("Outputs") + translationManager.emptyString
+ button1.text: qsTr("Export") + translationManager.emptyString
+ button1.enabled: appWindow.viewOnly
+ button1.onClicked: {
+ console.log("Transfer: export outputs clicked")
+ exportOutputsDialog.open();
+ }
+ button2.text: qsTr("Import") + translationManager.emptyString
+ button2.enabled: !appWindow.viewOnly
+ button2.onClicked: {
+ console.log("Transfer: import outputs clicked")
+ importOutputsDialog.open();
+ }
+ tooltip: {
+ var header = qsTr("Required for cold wallets to sign their corresponding key images") + translationManager.emptyString;
+ return "<style type='text/css'>.header{ font-size: 13px; } p{line-height:20px; margin-top:0px; margin-bottom:0px; " +
+ ";} p.orange{color:#ff9323;}</style>" +
+ "<div class='header'>" + header + "</div>" +
+ "<p>" + qsTr("1. Using view-only wallet, export the outputs into a file") + "</p>" +
+ "<p>" + qsTr("2. Using cold wallet, import the outputs file") + "</p>" +
+ translationManager.emptyString
+ }
+ }
+
+ AdvancedOptionsItem {
+ visible: persistentSettings.transferShowAdvanced && appWindow.walletMode >= 2
title: qsTr("Key images") + translationManager.emptyString
button1.text: qsTr("Export") + translationManager.emptyString
button1.enabled: !appWindow.viewOnly
@@ -1072,6 +1098,41 @@ Rectangle {
}
+ FileDialog {
+ id: exportOutputsDialog
+ selectMultiple: false
+ selectExisting: false
+ onAccepted: {
+ console.log(walletManager.urlToLocalPath(exportOutputsDialog.fileUrl))
+ if (currentWallet.exportOutputs(walletManager.urlToLocalPath(exportOutputsDialog.fileUrl), true)) {
+ appWindow.showStatusMessage(qsTr("Outputs successfully exported to file") + translationManager.emptyString, 3);
+ } else {
+ appWindow.showStatusMessage(currentWallet.errorString, 5);
+ }
+ }
+ onRejected: {
+ console.log("Canceled");
+ }
+ }
+
+ FileDialog {
+ id: importOutputsDialog
+ selectMultiple: false
+ selectExisting: true
+ title: qsTr("Please choose a file") + translationManager.emptyString
+ onAccepted: {
+ console.log(walletManager.urlToLocalPath(importOutputsDialog.fileUrl))
+ if (currentWallet.importOutputs(walletManager.urlToLocalPath(importOutputsDialog.fileUrl))) {
+ appWindow.showStatusMessage(qsTr("Outputs successfully imported to wallet") + translationManager.emptyString, 3);
+ } else {
+ appWindow.showStatusMessage(currentWallet.errorString, 5);
+ }
+ }
+ onRejected: {
+ console.log("Canceled");
+ }
+ }
+
//ExportKeyImagesDialog
FileDialog {
id: exportKeyImagesDialog
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp
index 691e03d3..c2aaab8f 100644
--- a/src/libwalletqt/Wallet.cpp
+++ b/src/libwalletqt/Wallet.cpp
@@ -499,6 +499,14 @@ bool Wallet::importKeyImages(const QString& path)
return m_walletImpl->importKeyImages(path.toStdString());
}
+bool Wallet::exportOutputs(const QString& path, bool all) {
+ return m_walletImpl->exportOutputs(path.toStdString(), all);
+}
+
+bool Wallet::importOutputs(const QString& path) {
+ return m_walletImpl->importOutputs(path.toStdString());
+}
+
bool Wallet::refresh(bool historyAndSubaddresses /* = true */)
{
refreshingSet(true);
diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h
index e55bceb9..c736df7d 100644
--- a/src/libwalletqt/Wallet.h
+++ b/src/libwalletqt/Wallet.h
@@ -208,6 +208,10 @@ public:
Q_INVOKABLE bool exportKeyImages(const QString& path, bool all = false);
Q_INVOKABLE bool importKeyImages(const QString& path);
+ //! export/import outputs
+ Q_INVOKABLE bool exportOutputs(const QString& path, bool all = false);
+ Q_INVOKABLE bool importOutputs(const QString& path);
+
//! refreshes the wallet
Q_INVOKABLE bool refresh(bool historyAndSubaddresses = true);