[Qt] Add delay before filtering transactions
Fixes 3141
This commit is contained in:
parent
b9bceaf1c0
commit
7b137acedd
2 changed files with 22 additions and 9 deletions
|
@ -33,6 +33,7 @@
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QSignalMapper>
|
#include <QSignalMapper>
|
||||||
#include <QTableView>
|
#include <QTableView>
|
||||||
|
#include <QTimer>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
@ -112,6 +113,17 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
|
||||||
amountWidget->setValidator(new QDoubleValidator(0, 1e20, 8, this));
|
amountWidget->setValidator(new QDoubleValidator(0, 1e20, 8, this));
|
||||||
hlayout->addWidget(amountWidget);
|
hlayout->addWidget(amountWidget);
|
||||||
|
|
||||||
|
// Delay before filtering transactions in ms
|
||||||
|
static const int input_filter_delay = 200;
|
||||||
|
|
||||||
|
QTimer* amount_typing_delay = new QTimer(this);
|
||||||
|
amount_typing_delay->setSingleShot(true);
|
||||||
|
amount_typing_delay->setInterval(input_filter_delay);
|
||||||
|
|
||||||
|
QTimer* prefix_typing_delay = new QTimer(this);
|
||||||
|
prefix_typing_delay->setSingleShot(true);
|
||||||
|
prefix_typing_delay->setInterval(input_filter_delay);
|
||||||
|
|
||||||
QVBoxLayout *vlayout = new QVBoxLayout(this);
|
QVBoxLayout *vlayout = new QVBoxLayout(this);
|
||||||
vlayout->setContentsMargins(0,0,0,0);
|
vlayout->setContentsMargins(0,0,0,0);
|
||||||
vlayout->setSpacing(0);
|
vlayout->setSpacing(0);
|
||||||
|
@ -173,8 +185,10 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
|
||||||
connect(dateWidget, SIGNAL(activated(int)), this, SLOT(chooseDate(int)));
|
connect(dateWidget, SIGNAL(activated(int)), this, SLOT(chooseDate(int)));
|
||||||
connect(typeWidget, SIGNAL(activated(int)), this, SLOT(chooseType(int)));
|
connect(typeWidget, SIGNAL(activated(int)), this, SLOT(chooseType(int)));
|
||||||
connect(watchOnlyWidget, SIGNAL(activated(int)), this, SLOT(chooseWatchonly(int)));
|
connect(watchOnlyWidget, SIGNAL(activated(int)), this, SLOT(chooseWatchonly(int)));
|
||||||
connect(addressWidget, SIGNAL(textChanged(QString)), this, SLOT(changedPrefix(QString)));
|
connect(amountWidget, SIGNAL(textChanged(QString)), amount_typing_delay, SLOT(start()));
|
||||||
connect(amountWidget, SIGNAL(textChanged(QString)), this, SLOT(changedAmount(QString)));
|
connect(amount_typing_delay, SIGNAL(timeout()), this, SLOT(changedAmount()));
|
||||||
|
connect(addressWidget, SIGNAL(textChanged(QString)), prefix_typing_delay, SLOT(start()));
|
||||||
|
connect(prefix_typing_delay, SIGNAL(timeout()), this, SLOT(changedPrefix()));
|
||||||
|
|
||||||
connect(view, SIGNAL(doubleClicked(QModelIndex)), this, SIGNAL(doubleClicked(QModelIndex)));
|
connect(view, SIGNAL(doubleClicked(QModelIndex)), this, SIGNAL(doubleClicked(QModelIndex)));
|
||||||
connect(view, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextualMenu(QPoint)));
|
connect(view, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextualMenu(QPoint)));
|
||||||
|
@ -312,20 +326,19 @@ void TransactionView::chooseWatchonly(int idx)
|
||||||
(TransactionFilterProxy::WatchOnlyFilter)watchOnlyWidget->itemData(idx).toInt());
|
(TransactionFilterProxy::WatchOnlyFilter)watchOnlyWidget->itemData(idx).toInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransactionView::changedPrefix(const QString &prefix)
|
void TransactionView::changedPrefix()
|
||||||
{
|
{
|
||||||
if(!transactionProxyModel)
|
if(!transactionProxyModel)
|
||||||
return;
|
return;
|
||||||
transactionProxyModel->setAddressPrefix(prefix);
|
transactionProxyModel->setAddressPrefix(addressWidget->text());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransactionView::changedAmount(const QString &amount)
|
void TransactionView::changedAmount()
|
||||||
{
|
{
|
||||||
if(!transactionProxyModel)
|
if(!transactionProxyModel)
|
||||||
return;
|
return;
|
||||||
CAmount amount_parsed = 0;
|
CAmount amount_parsed = 0;
|
||||||
if(BitcoinUnits::parse(model->getOptionsModel()->getDisplayUnit(), amount, &amount_parsed))
|
if (BitcoinUnits::parse(model->getOptionsModel()->getDisplayUnit(), amountWidget->text(), &amount_parsed)) {
|
||||||
{
|
|
||||||
transactionProxyModel->setMinAmount(amount_parsed);
|
transactionProxyModel->setMinAmount(amount_parsed);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -112,8 +112,8 @@ public Q_SLOTS:
|
||||||
void chooseDate(int idx);
|
void chooseDate(int idx);
|
||||||
void chooseType(int idx);
|
void chooseType(int idx);
|
||||||
void chooseWatchonly(int idx);
|
void chooseWatchonly(int idx);
|
||||||
void changedPrefix(const QString &prefix);
|
void changedAmount();
|
||||||
void changedAmount(const QString &amount);
|
void changedPrefix();
|
||||||
void exportClicked();
|
void exportClicked();
|
||||||
void focusTransaction(const QModelIndex&);
|
void focusTransaction(const QModelIndex&);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue