It's senseless to import pubkey pair address.
[novacoin.git] / src / qt / multisigdialog.cpp
index 144f370..8f9beea 100644 (file)
@@ -2,6 +2,7 @@
 #include <QDialog>
 #include <QMessageBox>
 #include <QScrollBar>
+#include <QKeyEvent>
 #include <vector>
 
 #include "addresstablemodel.h"
@@ -24,7 +25,7 @@
 #include "txdb-bdb.h"
 #endif
 
-MultisigDialog::MultisigDialog(QWidget *parent) : QDialog(parent), ui(new Ui::MultisigDialog), model(0)
+MultisigDialog::MultisigDialog(QWidget *parent) : QWidget(parent), ui(new Ui::MultisigDialog), model(0)
 {
     ui->setupUi(this);
 
@@ -164,9 +165,24 @@ void MultisigDialog::on_createAddressButton_clicked()
         pubkeys[i].SetPubKey(vchPubKey);
     }
 
-    if((required == 0) || (required > pubkeys.size()))
+    if(pubkeys.size() > 16)
+    {
+        QMessageBox::warning(this, tr("Error"), tr("Number of addresses involved in the address creation > %1\nReduce the number").arg(16), QMessageBox::Ok);
+        return;
+    }
+
+    if(required == 0)
+    {
+        QMessageBox::warning(this, tr("Error"), tr("Number of required signatures is 0\nNumber of required signatures must be between 1 and number of keys involved in the creation of address."), QMessageBox::Ok);
         return;
+    }
 
+    if(required > pubkeys.size())
+    {
+        QMessageBox::warning(this, tr("Error"), tr("Number of required signatures > Number of keys involved in the creation of address."), QMessageBox::Ok);
+        return;
+    }
+    
     CScript script;
     script.SetMultisig(required, pubkeys);
     if (script.size() > MAX_SCRIPT_ELEMENT_SIZE)
@@ -296,7 +312,7 @@ void MultisigDialog::on_createTransactionButton_clicked()
                 SendCoinsRecipient recipient = entry->getValue();
                 CBitcoinAddress address(recipient.address.toStdString());
                 CScript scriptPubKey;
-                scriptPubKey.SetDestination(address.Get());
+                scriptPubKey.SetAddress(address);
                 int64_t amount = recipient.amount;
                 CTxOut output(amount, scriptPubKey);
                 transaction.vout.push_back(output);
@@ -333,6 +349,7 @@ void MultisigDialog::on_transaction_textChanged()
     }
     catch(std::exception &e)
     {
+        (void)e;
         return;
     }
 
@@ -403,6 +420,7 @@ void MultisigDialog::on_signTransactionButton_clicked()
     }
     catch(std::exception &e)
     {
+        (void)e;
         return;
     }
     CTransaction mergedTx(tx);
@@ -522,6 +540,7 @@ void MultisigDialog::on_sendTransactionButton_clicked()
     }
     catch(std::exception &e)
     {
+        (void)e;
         return;
     }
     uint256 txHash = tx.GetHash();
@@ -623,4 +642,19 @@ void MultisigDialog::updateAmounts()
     QString feeStr;
     feeStr.sprintf("%.6f", (double) fee / COIN);
     ui->fee->setText(feeStr);
-}
\ No newline at end of file
+}
+
+void MultisigDialog::keyPressEvent(QKeyEvent *event)
+{
+#ifdef ANDROID
+    if(windowType() != Qt::Widget && event->key() == Qt::Key_Back)
+    {
+        close();
+    }
+#else
+    if(windowType() != Qt::Widget && event->key() == Qt::Key_Escape)
+    {
+        close();
+    }
+#endif
+}