m_sweepOutputAction = new QAction("Sweep output", this);
m_sweepOutputsAction = new QAction("Sweep selected outputs", this);
- connect(m_freezeOutputAction, &QAction::triggered, this, &CoinsWidget::freezeOutput);
- connect(m_thawOutputAction, &QAction::triggered, this, &CoinsWidget::thawOutput);
+ connect(m_freezeOutputAction, &QAction::triggered, this, &CoinsWidget::freezeAllSelected);
+ connect(m_thawOutputAction, &QAction::triggered, this, &CoinsWidget::thawAllSelected);
connect(m_viewOutputAction, &QAction::triggered, this, &CoinsWidget::viewOutput);
connect(m_sweepOutputAction, &QAction::triggered, this, &CoinsWidget::onSweepOutputs);
connect(m_sweepOutputsAction, &QAction::triggered, this, &CoinsWidget::onSweepOutputs);
m_proxyModel->setSearchFilter(filter);
}
-void CoinsWidget::freezeOutput() {
- QModelIndex index = ui->coins->currentIndex();
- QVector<int> indexes = {m_proxyModel->mapToSource(index).row()};
- this->freezeCoins(indexes);
-}
-
-void CoinsWidget::freezeAllSelected() {
+QStringList CoinsWidget::selectedPubkeys() {
QModelIndexList list = ui->coins->selectionModel()->selectedRows();
- QVector<int> indexes;
+ QStringList pubkeys;
for (QModelIndex index: list) {
- indexes.push_back(m_proxyModel->mapToSource(index).row()); // todo: will segfault if index get invalidated
+ pubkeys << m_model->entryFromIndex(m_proxyModel->mapToSource(index))->pubKey();
}
- this->freezeCoins(indexes);
+ return pubkeys;
}
-void CoinsWidget::thawOutput() {
- QModelIndex index = ui->coins->currentIndex();
- QVector<int> indexes = {m_proxyModel->mapToSource(index).row()};
- this->thawCoins(indexes);
+void CoinsWidget::freezeAllSelected() {
+ QStringList pubkeys = this->selectedPubkeys();
+ this->freezeCoins(pubkeys);
}
void CoinsWidget::thawAllSelected() {
- QModelIndexList list = ui->coins->selectionModel()->selectedRows();
-
- QVector<int> indexes;
- for (QModelIndex index: list) {
- indexes.push_back(m_proxyModel->mapToSource(index).row());
- }
- this->thawCoins(indexes);
+ QStringList pubkeys = this->selectedPubkeys();
+ this->thawCoins(pubkeys);
}
void CoinsWidget::viewOutput() {
return selectedCoins;
}
-void CoinsWidget::freezeCoins(const QVector<int>& indexes) {
- for (int i : indexes) {
- m_ctx->wallet->coins()->freeze(i);
+void CoinsWidget::freezeCoins(QStringList &pubkeys) {
+ for (auto &pubkey : pubkeys) {
+ m_ctx->wallet->coins()->freeze(pubkey);
}
m_ctx->wallet->coins()->refresh(m_ctx->wallet->currentSubaddressAccount());
m_ctx->updateBalance();
}
-void CoinsWidget::thawCoins(const QVector<int> &indexes) {
- for (int i : indexes) {
- m_ctx->wallet->coins()->thaw(i);
+void CoinsWidget::thawCoins(QStringList &pubkeys) {
+ for (auto &pubkey : pubkeys) {
+ m_ctx->wallet->coins()->thaw(pubkey);
}
m_ctx->wallet->coins()->refresh(m_ctx->wallet->currentSubaddressAccount());
m_ctx->updateBalance();