git / moonbite-core / src/qt/sendcoinsdialog.h · raw

// Copyright (c) 2011-2019 The Bitcoin Core developers// Distributed under the MIT software license, see the accompanying// file COPYING or http://www.opensource.org/licenses/mit-license.php.#ifndef BITCOIN_QT_SENDCOINSDIALOG_H#define BITCOIN_QT_SENDCOINSDIALOG_H#include <qt/walletmodel.h>#include <QDialog>#include <QMessageBox>#include <QString>#include <QTimer>class CCoinControl;class ClientModel;class PlatformStyle;class SendCoinsEntry;class SendCoinsRecipient;enum class SynchronizationState;namespace Ui {    class SendCoinsDialog;}QT_BEGIN_NAMESPACEclass QUrl;QT_END_NAMESPACE/** Dialog for sending bitcoins */class SendCoinsDialog : public QDialog{    Q_OBJECTpublic:    explicit SendCoinsDialog(const PlatformStyle *platformStyle, QWidget *parent = nullptr);    ~SendCoinsDialog();    void setClientModel(ClientModel *clientModel);    void setModel(WalletModel *model);    /** Set up the tab chain manually, as Qt messes up the tab chain by default in some cases (issue https://bugreports.qt-project.org/browse/QTBUG-10907).     */    QWidget *setupTabChain(QWidget *prev);    void setAddress(const QString &address);    void pasteEntry(const SendCoinsRecipient &rv);    bool handlePaymentRequest(const SendCoinsRecipient &recipient);public Q_SLOTS:    void clear();    void reject() override;    void accept() override;    SendCoinsEntry *addEntry();    void updateTabsAndLabels();    void setBalance(const interfaces::WalletBalances& balances);Q_SIGNALS:    void coinsSent(const uint256& txid);private:    Ui::SendCoinsDialog *ui;    ClientModel *clientModel;    WalletModel *model;    std::unique_ptr<CCoinControl> m_coin_control;    std::unique_ptr<WalletModelTransaction> m_current_transaction;    bool fNewRecipientAllowed;    bool fFeeMinimized;    const PlatformStyle *platformStyle;    // Process WalletModel::SendCoinsReturn and generate a pair consisting    // of a message and message flags for use in Q_EMIT message().    // Additional parameter msgArg can be used via .arg(msgArg).    void processSendCoinsReturn(const WalletModel::SendCoinsReturn &sendCoinsReturn, const QString &msgArg = QString());    void minimizeFeeSection(bool fMinimize);    // Format confirmation message    bool PrepareSendText(QString& question_string, QString& informative_text, QString& detailed_text);    void updateFeeMinimizedLabel();    // Update the passed in CCoinControl with state from the GUI    void updateCoinControlState(CCoinControl& ctrl);private Q_SLOTS:    void on_sendButton_clicked();    void on_buttonChooseFee_clicked();    void on_buttonMinimizeFee_clicked();    void removeEntry(SendCoinsEntry* entry);    void useAvailableBalance(SendCoinsEntry* entry);    void updateDisplayUnit();    void coinControlFeatureChanged(bool);    void coinControlButtonClicked();    void coinControlChangeChecked(int);    void coinControlChangeEdited(const QString &);    void coinControlUpdateLabels();    void coinControlClipboardQuantity();    void coinControlClipboardAmount();    void coinControlClipboardFee();    void coinControlClipboardAfterFee();    void coinControlClipboardBytes();    void coinControlClipboardLowOutput();    void coinControlClipboardChange();    void mwebFeatureChanged(bool);    void mwebPegInButtonClicked(bool checked);    void mwebPegOutButtonClicked(bool checked);    void updateFeeSectionControls();    void updateNumberOfBlocks(int count, const QDateTime& blockDate, double nVerificationProgress, bool headers, SynchronizationState sync_state);    void updateSmartFeeLabel();Q_SIGNALS:    // Fired when a message should be reported to the user    void message(const QString &title, const QString &message, unsigned int style);};#define SEND_CONFIRM_DELAY   3class SendConfirmationDialog : public QMessageBox{    Q_OBJECTpublic:    SendConfirmationDialog(const QString& title, const QString& text, const QString& informative_text = "", const QString& detailed_text = "", int secDelay = SEND_CONFIRM_DELAY, const QString& confirmText = "", QWidget* parent = nullptr);    int exec() override;private Q_SLOTS:    void countDown();    void updateYesButton();private:    QAbstractButton *yesButton;    QTimer countDownTimer;    int secDelay;    QString confirmButtonText;};#endif // BITCOIN_QT_SENDCOINSDIALOG_H