#include <QDialog>
#include <QMessageBox>
#include <QScrollBar>
+#include <QKeyEvent>
#include <vector>
#include "addresstablemodel.h"
#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);
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)
+ {
+ QMessageBox::warning(this, tr("Error"), tr("Redeem script exceeds size limit: %1 > %2\nReduce the number of addresses involved in the address creation.").arg(script.size()).arg(MAX_SCRIPT_ELEMENT_SIZE), QMessageBox::Ok);
+ return;
+ }
CScriptID scriptID = script.GetID();
CBitcoinAddress address(scriptID);
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);
}
catch(std::exception &e)
{
+ (void)e;
return;
}
}
catch(std::exception &e)
{
+ (void)e;
return;
}
CTransaction mergedTx(tx);
}
catch(std::exception &e)
{
+ (void)e;
return;
}
uint256 txHash = tx.GetHash();
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
+}