aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow/widgets/loadingbar.cpp
blob: 76eafc4cab413c9eb2a762097bda57669fad1671 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
 * This file is part of smolbote. It's copyrighted by the contributors recorded
 * in the version control history of the file, available from its original
 * location: https://neueland.iserlohn-fortress.net/smolbote.hg
 *
 * SPDX-License-Identifier: GPL-3.0
 */

#include "loadingbar.h"
#include <QTimer>
#include "webengine/webview.h"

LoadingBar::LoadingBar(QWidget *parent)
    : QProgressBar(parent)
{
    setMaximum(100);
}

void LoadingBar::connectWebView(WebView *view)
{
    Q_CHECK_PTR(view);

    disconnect(loadStartedConnection);
    disconnect(loadProgressConnection);
    disconnect(loadedConnection);
    disconnect(loadFinishedConnection);

    if(view->isLoaded()) {
        this->hide();
    } else {
        loadStarted();
        setValue(view->loadProgress());
    }

    loadStartedConnection = connect(view, &QWebEngineView::loadStarted, this, &LoadingBar::loadStarted);
    loadProgressConnection = connect(view, &QWebEngineView::loadProgress, this, &QProgressBar::setValue);
    loadedConnection = connect(view, &WebView::loaded, this, [this]() {
        QTimer::singleShot(2000, this, &LoadingBar::hide);
    });
    loadFinishedConnection = connect(view, &QWebEngineView::loadFinished, this, &LoadingBar::loadFinished);
}

void LoadingBar::loadStarted()
{
    resetFormat();
    show();
    setValue(0);
}

void LoadingBar::loadFinished(bool ok)
{
    setFormat(QString("%p% %1").arg(ok ? tr("Finished") : tr("Failed")));
}