Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
qt
paymentserver.h
Go to the documentation of this file.
1
// Copyright (c) 2011-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef BITCOIN_QT_PAYMENTSERVER_H
6
#define BITCOIN_QT_PAYMENTSERVER_H
7
8
// This class handles payment requests from clicking on
9
// bitcoin: URIs
10
//
11
// This is somewhat tricky, because we have to deal with
12
// the situation where the user clicks on a link during
13
// startup/initialization, when the splash-screen is up
14
// but the main window (and the Send Coins tab) is not.
15
//
16
// So, the strategy is:
17
//
18
// Create the server, and register the event handler,
19
// when the application is created. Save any URIs
20
// received at or during startup in a list.
21
//
22
// When startup is finished and the main window is
23
// shown, a signal is sent to slot uiReady(), which
24
// emits a receivedURI() signal for any payment
25
// requests that happened during startup.
26
//
27
// After startup, receivedURI() happens as usual.
28
//
29
// This class has one more feature: a static
30
// method that finds URIs passed in the command line
31
// and, if a server is running in another process,
32
// sends them to the server.
33
//
34
35
#include <
qt/sendcoinsrecipient.h
>
36
37
#include <QObject>
38
#include <QString>
39
40
class
OptionsModel
;
41
42
namespace
interfaces
{
43
class
Node
;
44
}
// namespace interfaces
45
46
QT_BEGIN_NAMESPACE
47
class
QApplication;
48
class
QByteArray;
49
class
QLocalServer;
50
class
QUrl;
51
QT_END_NAMESPACE
52
53
extern
const
QString
BITCOIN_IPC_PREFIX
;
54
55
class
PaymentServer
:
public
QObject
56
{
57
Q_OBJECT
58
59
public
:
60
// Parse URIs on command line
61
// Returns false on error
62
static
void
ipcParseCommandLine
(
int
argc,
char
*argv[]);
63
64
// Returns true if there were URIs on the command line
65
// which were successfully sent to an already-running
66
// process.
67
// Note: if a payment request is given, SelectParams(MAIN/TESTNET)
68
// will be called so we startup in the right mode.
69
static
bool
ipcSendCommandLine
();
70
71
// parent should be QApplication object
72
explicit
PaymentServer
(QObject* parent,
bool
startLocalServer =
true
);
73
~PaymentServer
();
74
75
// OptionsModel is used for getting proxy settings and display unit
76
void
setOptionsModel
(
OptionsModel
*
optionsModel
);
77
78
Q_SIGNALS:
79
// Fired when a valid payment request is received
80
void
receivedPaymentRequest
(
SendCoinsRecipient
);
81
82
// Fired when a message should be reported to the user
83
void
message
(
const
QString &title,
const
QString &
message
,
unsigned
int
style);
84
85
public
Q_SLOTS:
86
// Signal this when the main window's UI is ready
87
// to display payment requests to the user
88
void
uiReady
();
89
90
// Handle an incoming URI, URI with local file scheme or file
91
void
handleURIOrFile
(
const
QString& s);
92
93
private
Q_SLOTS:
94
void
handleURIConnection
();
95
96
protected
:
97
// Constructor registers this on the parent QApplication to
98
// receive QEvent::FileOpen and QEvent:Drop events
99
bool
eventFilter
(QObject *
object
, QEvent *event)
override
;
100
101
private
:
102
bool
saveURIs
{
true
};
// true during startup
103
QLocalServer*
uriServer
{
nullptr
};
104
OptionsModel
*
optionsModel
{
nullptr
};
105
};
106
107
#endif
// BITCOIN_QT_PAYMENTSERVER_H
OptionsModel
Interface from Qt to configuration data structure for Bitcoin client.
Definition
optionsmodel.h:43
PaymentServer::~PaymentServer
~PaymentServer()
PaymentServer::ipcSendCommandLine
static bool ipcSendCommandLine()
Definition
paymentserver.cpp:92
PaymentServer::setOptionsModel
void setOptionsModel(OptionsModel *optionsModel)
Definition
paymentserver.cpp:261
PaymentServer::PaymentServer
PaymentServer(QObject *parent, bool startLocalServer=true)
Definition
paymentserver.cpp:125
PaymentServer::message
void message(const QString &title, const QString &message, unsigned int style)
PaymentServer::handleURIConnection
void handleURIConnection()
Definition
paymentserver.cpp:241
PaymentServer::ipcParseCommandLine
static void ipcParseCommandLine(int argc, char *argv[])
Definition
paymentserver.cpp:72
PaymentServer::uriServer
QLocalServer * uriServer
Definition
paymentserver.h:103
PaymentServer::saveURIs
bool saveURIs
Definition
paymentserver.h:102
PaymentServer::receivedPaymentRequest
void receivedPaymentRequest(SendCoinsRecipient)
PaymentServer::uiReady
void uiReady()
Definition
paymentserver.cpp:174
PaymentServer::eventFilter
bool eventFilter(QObject *object, QEvent *event) override
Definition
paymentserver.cpp:159
PaymentServer::handleURIOrFile
void handleURIOrFile(const QString &s)
Definition
paymentserver.cpp:184
PaymentServer::optionsModel
OptionsModel * optionsModel
Definition
paymentserver.h:104
SendCoinsRecipient
Definition
sendcoinsrecipient.h:16
interfaces::Node
Top-level interface for a bitcoin node (bitcoind process).
Definition
node.h:70
interfaces
Definition
interfaces.cpp:41
BITCOIN_IPC_PREFIX
QT_END_NAMESPACE const QString BITCOIN_IPC_PREFIX
sendcoinsrecipient.h
Generated on
for Bitcoin Core by
1.17.0