From: tobtoht Date: Wed, 12 Mar 2025 13:23:39 +0000 (+0100) Subject: Receive: don't refresh model on new block X-Git-Url: https://git.nutra.tk/v1?a=commitdiff_plain;h=c5aef15bb0b73c62468c5a984791d5155a442f21;p=gamesguru%2Ffeather.git Receive: don't refresh model on new block --- diff --git a/src/libwalletqt/Subaddress.cpp b/src/libwalletqt/Subaddress.cpp index e9985203..95be89f6 100644 --- a/src/libwalletqt/Subaddress.cpp +++ b/src/libwalletqt/Subaddress.cpp @@ -69,6 +69,18 @@ bool Subaddress::refresh(quint32 accountIndex) return !potentialWalletFileCorruption; } +void Subaddress::updateUsed(quint32 accountIndex) +{ + for (quint32 i = 0; i < m_rows.count(); i++) { + SubaddressRow& row = m_rows[i]; + + if (m_wallet2->get_subaddress_used({accountIndex, i}) != row.used) { + row.used = !row.used; + emit rowUpdated(i); + } + } +} + qsizetype Subaddress::count() const { return m_rows.length(); diff --git a/src/libwalletqt/Subaddress.h b/src/libwalletqt/Subaddress.h index b57d2370..2f5f6a11 100644 --- a/src/libwalletqt/Subaddress.h +++ b/src/libwalletqt/Subaddress.h @@ -20,6 +20,7 @@ class Subaddress : public QObject public: bool refresh(quint32 accountIndex); + void updateUsed(quint32 accountIndex); [[nodiscard]] qsizetype count() const; const SubaddressRow& row(int index) const; @@ -38,6 +39,7 @@ public: signals: void refreshStarted() const; void refreshFinished() const; + void rowUpdated(qsizetype index) const; void corrupted() const; private: diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 73a7dd12..f9fa06af 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -545,14 +545,18 @@ void Wallet::onNewBlock(uint64_t walletHeight) { this->syncStatusUpdated(walletHeight, daemonHeight); if (this->isSynchronized()) { - this->refreshModels(); + m_history->refresh(); + m_coins->refresh(); + this->subaddress()->updateUsed(this->currentSubaddressAccount()); } } void Wallet::onUpdated() { this->updateBalance(); if (this->isSynchronized()) { - this->refreshModels(); + m_history->refresh(); + m_coins->refresh(); + this->subaddress()->updateUsed(this->currentSubaddressAccount()); } } diff --git a/src/model/SubaddressModel.cpp b/src/model/SubaddressModel.cpp index 3161c806..b67226cb 100644 --- a/src/model/SubaddressModel.cpp +++ b/src/model/SubaddressModel.cpp @@ -19,6 +19,7 @@ SubaddressModel::SubaddressModel(QObject *parent, Subaddress *subaddress) { connect(m_subaddress, &Subaddress::refreshStarted, this, &SubaddressModel::beginResetModel); connect(m_subaddress, &Subaddress::refreshFinished, this, &SubaddressModel::endResetModel); + connect(m_subaddress, &Subaddress::rowUpdated, this, &SubaddressModel::rowUpdated); } int SubaddressModel::rowCount(const QModelIndex &parent) const @@ -193,3 +194,8 @@ const SubaddressRow& SubaddressModel::entryFromIndex(const QModelIndex &index) c Q_ASSERT(index.isValid() && index.row() < m_subaddress->count()); return m_subaddress->row(index.row()); } + +void SubaddressModel::rowUpdated(qsizetype index) +{ + emit dataChanged(this->index(index, 0), this->index(index, SubaddressModel::COUNT - 1), {Qt::DisplayRole, Qt::EditRole}); +} diff --git a/src/model/SubaddressModel.h b/src/model/SubaddressModel.h index 4e45c2aa..de6abed6 100644 --- a/src/model/SubaddressModel.h +++ b/src/model/SubaddressModel.h @@ -38,6 +38,8 @@ public: void setCurrentSubaddressAccount(quint32 accountIndex); + void rowUpdated(qsizetype index); + private: Subaddress *m_subaddress; QVariant parseSubaddressRow(const SubaddressRow &subaddress, const QModelIndex &index, int role) const;