mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 23:18:14 +01:00
Implement RPCTimerHandler for Qt RPC console
Implement RPCTimerHandler for Qt RPC console, so that `walletpassphrase` works with GUI and `-server=0`. Also simplify HTTPEvent-related code by using boost::function directly.
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
#include <QScrollBar>
|
||||
#include <QThread>
|
||||
#include <QTime>
|
||||
#include <QTimer>
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <QUrl>
|
||||
@@ -66,6 +67,40 @@ Q_SIGNALS:
|
||||
void reply(int category, const QString &command);
|
||||
};
|
||||
|
||||
/** Class for handling RPC timers
|
||||
* (used for e.g. re-locking the wallet after a timeout)
|
||||
*/
|
||||
class QtRPCTimerBase: public QObject, public RPCTimerBase
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
QtRPCTimerBase(boost::function<void(void)>& func, int64_t millis):
|
||||
func(func)
|
||||
{
|
||||
timer.setSingleShot(true);
|
||||
connect(&timer, SIGNAL(timeout()), this, SLOT(timeout()));
|
||||
timer.start(millis);
|
||||
}
|
||||
~QtRPCTimerBase() {}
|
||||
private Q_SLOTS:
|
||||
void timeout() { func(); }
|
||||
private:
|
||||
QTimer timer;
|
||||
boost::function<void(void)> func;
|
||||
};
|
||||
|
||||
class QtRPCTimerInterface: public RPCTimerInterface
|
||||
{
|
||||
public:
|
||||
~QtRPCTimerInterface() {}
|
||||
const char *Name() { return "Qt"; }
|
||||
RPCTimerBase* NewTimer(boost::function<void(void)>& func, int64_t millis)
|
||||
{
|
||||
return new QtRPCTimerBase(func, millis);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#include "rpcconsole.moc"
|
||||
|
||||
/**
|
||||
@@ -232,6 +267,9 @@ RPCConsole::RPCConsole(const PlatformStyle *platformStyle, QWidget *parent) :
|
||||
ui->label_berkeleyDBVersion->hide();
|
||||
ui->berkeleyDBVersion->hide();
|
||||
#endif
|
||||
// Register RPC timer interface
|
||||
rpcTimerInterface = new QtRPCTimerInterface();
|
||||
RPCRegisterTimerInterface(rpcTimerInterface);
|
||||
|
||||
startExecutor();
|
||||
setTrafficGraphRange(INITIAL_TRAFFIC_GRAPH_MINS);
|
||||
@@ -246,6 +284,8 @@ RPCConsole::~RPCConsole()
|
||||
{
|
||||
GUIUtil::saveWindowGeometry("nRPCConsoleWindow", this);
|
||||
Q_EMIT stopExecutor();
|
||||
RPCUnregisterTimerInterface(rpcTimerInterface);
|
||||
delete rpcTimerInterface;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user