mirror of
https://github.com/feather-wallet/feather.git
synced 2025-04-10 07:07:32 +00:00
Add batch creation of addresses and export of addresses
This commit is contained in:
parent
055b898c85
commit
714e3449a7
3 changed files with 57 additions and 4 deletions
|
@ -4,6 +4,7 @@
|
|||
#include "ReceiveWidget.h"
|
||||
#include "ui_ReceiveWidget.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QMenu>
|
||||
|
||||
#include "dialog/PaymentRequestDialog.h"
|
||||
|
@ -80,6 +81,7 @@ ReceiveWidget::ReceiveWidget(Wallet *wallet, QWidget *parent)
|
|||
|
||||
connect(ui->btn_generateSubaddress, &QPushButton::clicked, this, &ReceiveWidget::generateSubaddress);
|
||||
connect(ui->btn_createPaymentRequest, &QPushButton::clicked, this, &ReceiveWidget::createPaymentRequest);
|
||||
connect(ui->btn_exportSubAddresses, &QPushButton::clicked, this, &ReceiveWidget::exportSubaddresses);
|
||||
}
|
||||
|
||||
void ReceiveWidget::addOption(QMenu *menu, const QString &text, Config::ConfigKey key, const std::function<void(bool show)>& func) {
|
||||
|
@ -220,9 +222,39 @@ void ReceiveWidget::showOnDevice() {
|
|||
}
|
||||
|
||||
void ReceiveWidget::generateSubaddress() {
|
||||
bool r = m_wallet->subaddress()->addRow(m_wallet->currentSubaddressAccount(), "");
|
||||
if (!r) {
|
||||
Utils::showError(this, "Failed to generate subaddress", m_wallet->subaddress()->getError());
|
||||
int numSubaddressesToGenerate = ui->spn_numBatchSubaddresses->value();
|
||||
|
||||
for (int subAddressIndex = 0; subAddressIndex < numSubaddressesToGenerate; subAddressIndex++) {
|
||||
bool r = m_wallet->subaddress()->addRow(m_wallet->currentSubaddressAccount(), "");
|
||||
if (!r) {
|
||||
Utils::showError(this, "Failed to generate subaddress", m_wallet->subaddress()->getError());
|
||||
|
||||
//Stop the loop on first error, to prevent multiple errors if we batch create more than 1 address.
|
||||
subAddressIndex = numSubaddressesToGenerate;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ReceiveWidget::exportSubaddresses() {
|
||||
QFileDialog exportAddressesdialog;
|
||||
exportAddressesdialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||
exportAddressesdialog.setDirectory(".");
|
||||
exportAddressesdialog.selectFile("Addresses.txt");
|
||||
|
||||
if (exportAddressesdialog.exec()) {
|
||||
QString fileName = exportAddressesdialog.selectedFiles().first();
|
||||
QFile file(fileName);
|
||||
|
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
|
||||
Utils::showError(this, "Failed to export subaddress", "Could not export subaddresses to file.");
|
||||
}
|
||||
|
||||
QTextStream stream(&file);
|
||||
for (int i = 0; i < m_wallet->numSubaddresses(m_wallet->currentSubaddressAccount()); i++) {
|
||||
QString address = this->getAddress(i);
|
||||
stream << address << "\n";
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -263,4 +295,4 @@ SubaddressRow* ReceiveWidget::currentEntry() {
|
|||
}
|
||||
}
|
||||
|
||||
ReceiveWidget::~ReceiveWidget() = default;
|
||||
ReceiveWidget::~ReceiveWidget() = default;
|
||||
|
|
|
@ -46,6 +46,7 @@ private slots:
|
|||
void showHeaderMenu(const QPoint& position);
|
||||
void showOnDevice();
|
||||
void generateSubaddress();
|
||||
void exportSubaddresses();
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::ReceiveWidget> ui;
|
||||
|
|
|
@ -127,6 +127,19 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="spn_numBatchSubaddresses">
|
||||
<property name="toolTip">
|
||||
<string>Number of addresses to generate.</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btn_generateSubaddress">
|
||||
<property name="text">
|
||||
|
@ -134,6 +147,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btn_exportSubAddresses">
|
||||
<property name="text">
|
||||
<string>Export addresses</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
|
|
Loading…
Reference in a new issue