11#include <QEasingCurve> 
   12#include <QPropertyAnimation> 
   13#include <QResizeEvent> 
   19bestHeaderDate(QDateTime()),
 
   26        parent->installEventFilter(
this);
 
   34        ui->
infoTextStrong->setText(tr(
"%1 is currently syncing.  It will download headers and blocks from peers and validate them until reaching the tip of the block chain.").arg(
PACKAGE_NAME));
 
   49    if (obj == parent()) {
 
   50        if (ev->type() == QEvent::Resize) {
 
   51            QResizeEvent * rev = 
static_cast<QResizeEvent*
>(ev);
 
   54                setGeometry(0, height(), width(), height());
 
   60        else if (ev->type() == QEvent::ChildAdded) {
 
   64    return QWidget::eventFilter(obj, ev);
 
   69    if (ev->type() == QEvent::ParentAboutToChange) {
 
   70        if (parent()) parent()->removeEventFilter(
this);
 
   72    else if (ev->type() == QEvent::ParentChange) {
 
   74            parent()->installEventFilter(
this);
 
   78    return QWidget::event(ev);
 
   92    QDateTime currentDate = QDateTime::currentDateTime();
 
   95    blockProcessTime.push_front(qMakePair(currentDate.toMSecsSinceEpoch(), nVerificationProgress));
 
   99        double progressDelta = 0;
 
  100        double progressPerHour = 0;
 
  101        qint64 timeDelta = 0;
 
  102        qint64 remainingMSecs = 0;
 
  103        double remainingProgress = 1.0 - nVerificationProgress;
 
  108            if (sample.first < (currentDate.toMSecsSinceEpoch() - 500 * 1000) || i == 
blockProcessTime.size() - 1) {
 
  111                progressPerHour = progressDelta / (double) timeDelta * 1000 * 3600;
 
  112                remainingMSecs = (progressDelta > 0) ? remainingProgress / progressDelta * timeDelta : -1;
 
  120        if(remainingMSecs >= 0) {
 
  126        static const int MAX_SAMPLES = 5000;
 
  175    if (!isVisible() && !hide)
 
  178    m_animation.setStartValue(QPoint(0, hide ? 0 : height()));
 
  180    m_animation.setEndValue(QPoint(0, hide ? height() : 0));
 
  181    m_animation.start(QAbstractAnimation::KeepWhenStopped);
 
const CChainParams & Params()
Return the currently selected parameters.
const Consensus::Params & GetConsensus() const
Modal overlay to display information about the chain-sync state.
void showHide(bool hide=false, bool userRequested=false)
bool event(QEvent *ev) override
Tracks parent widget changes.
void setKnownBestHeight(int count, const QDateTime &blockDate)
void tipUpdate(int count, const QDateTime &blockDate, double nVerificationProgress)
void UpdateHeaderSyncLabel()
ModalOverlay(bool enable_wallet, QWidget *parent)
void triggered(bool hidden)
QVector< QPair< qint64, double > > blockProcessTime
bool eventFilter(QObject *obj, QEvent *ev) override
QPropertyAnimation m_animation
QLabel * numberOfBlocksLeft
void setupUi(QWidget *ModalOverlay)
QLabel * progressIncreasePerH
QLabel * percentageProgress
QPushButton * closeButton
QLabel * expectedTimeLeft
static constexpr int HEADER_HEIGHT_DELTA_SYNC
The required delta of headers to the estimated number of available headers until we show the IBD prog...
QString formatNiceTimeOffset(qint64 secs)
int64_t nPowTargetSpacing