From f09e973e56a2fd404218b62df5dcf0717a6b59db Mon Sep 17 00:00:00 2001
From: tobtoht <thotbot@protonmail.com>
Date: Sat, 14 Aug 2021 17:39:15 +0200
Subject: [PATCH] TxConfAdvDialog: export tx key

---
 src/dialog/TxConfAdvDialog.cpp |  9 ++++++
 src/dialog/TxConfAdvDialog.h   |  3 ++
 src/dialog/TxConfAdvDialog.ui  | 51 ++++++++++++++++++++++++----------
 3 files changed, 48 insertions(+), 15 deletions(-)

diff --git a/src/dialog/TxConfAdvDialog.cpp b/src/dialog/TxConfAdvDialog.cpp
index fda8f53..8261849 100644
--- a/src/dialog/TxConfAdvDialog.cpp
+++ b/src/dialog/TxConfAdvDialog.cpp
@@ -19,6 +19,7 @@ TxConfAdvDialog::TxConfAdvDialog(QSharedPointer<AppContext> ctx, const QString &
     , m_ctx(std::move(ctx))
     , m_exportUnsignedMenu(new QMenu(this))
     , m_exportSignedMenu(new QMenu(this))
+    , m_exportTxKeyMenu(new QMenu(this))
 {
     ui->setupUi(this);
 
@@ -31,6 +32,9 @@ TxConfAdvDialog::TxConfAdvDialog(QSharedPointer<AppContext> ctx, const QString &
     m_exportSignedMenu->addAction("Save to file", this, &TxConfAdvDialog::signedSaveFile);
     ui->btn_exportSigned->setMenu(m_exportSignedMenu);
 
+    m_exportTxKeyMenu->addAction("Copy to clipboard", this, &TxConfAdvDialog::txKeyCopy);
+    ui->btn_exportTxKey->setMenu(m_exportTxKeyMenu);
+
     if (m_ctx->wallet->viewOnly()) {
         ui->btn_exportSigned->hide();
         ui->btn_send->hide();
@@ -80,6 +84,7 @@ void TxConfAdvDialog::setUnsignedTransaction(UnsignedTransaction *utx) {
 
     ui->btn_exportUnsigned->hide();
     ui->btn_exportSigned->hide();
+    ui->btn_exportTxKey->hide();
     ui->btn_sign->show();
     ui->btn_send->hide();
 
@@ -166,6 +171,10 @@ void TxConfAdvDialog::signedCopy() {
     Utils::copyToClipboard(m_tx->signedTxToHex(0));
 }
 
+void TxConfAdvDialog::txKeyCopy() {
+    Utils::copyToClipboard(m_tx->transaction(0)->txKey());
+}
+
 void TxConfAdvDialog::signedQrCode() {
 }
 
diff --git a/src/dialog/TxConfAdvDialog.h b/src/dialog/TxConfAdvDialog.h
index 922abfb..9122261 100644
--- a/src/dialog/TxConfAdvDialog.h
+++ b/src/dialog/TxConfAdvDialog.h
@@ -41,12 +41,15 @@ private:
     void signedQrCode();
     void signedSaveFile();
 
+    void txKeyCopy();
+
     QScopedPointer<Ui::TxConfAdvDialog> ui;
     QSharedPointer<AppContext> m_ctx;
     PendingTransaction *m_tx = nullptr;
     UnsignedTransaction *m_utx = nullptr;
     QMenu *m_exportUnsignedMenu;
     QMenu *m_exportSignedMenu;
+    QMenu *m_exportTxKeyMenu;
 };
 
 #endif //FEATHER_TXCONFADVDIALOG_H
diff --git a/src/dialog/TxConfAdvDialog.ui b/src/dialog/TxConfAdvDialog.ui
index 98abf6b..7030ee1 100644
--- a/src/dialog/TxConfAdvDialog.ui
+++ b/src/dialog/TxConfAdvDialog.ui
@@ -21,19 +21,30 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <widget class="QLabel" name="label">
-     <property name="text">
-      <string>Transaction ID:</string>
-     </property>
-    </widget>
+    <layout class="QHBoxLayout" name="horizontalLayout_3">
+     <item>
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Transaction ID:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="txid">
+       <property name="text">
+        <string>txid</string>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
    <item>
-    <widget class="QLineEdit" name="txid">
-     <property name="text">
-      <string>txid</string>
-     </property>
-     <property name="readOnly">
-      <bool>true</bool>
+    <widget class="Line" name="line_3">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
      </property>
     </widget>
    </item>
@@ -251,6 +262,16 @@
        </property>
       </widget>
      </item>
+     <item>
+      <widget class="QToolButton" name="btn_exportTxKey">
+       <property name="text">
+        <string>Export tx key</string>
+       </property>
+       <property name="popupMode">
+        <enum>QToolButton::InstantPopup</enum>
+       </property>
+      </widget>
+     </item>
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
@@ -272,16 +293,16 @@
       </widget>
      </item>
      <item>
-      <widget class="QPushButton" name="btn_send">
+      <widget class="QPushButton" name="btn_close">
        <property name="text">
-        <string>Send</string>
+        <string>Cancel</string>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QPushButton" name="btn_close">
+      <widget class="QPushButton" name="btn_send">
        <property name="text">
-        <string>Close</string>
+        <string>Send</string>
        </property>
       </widget>
      </item>