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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
/*
SPDX-FileCopyrightText: 2012 Milian Wolff <mail@milianw.de>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#include "phpdocumentationwidget.h"
#include <QProgressBar>
#include <QLabel>
#include <QVBoxLayout>
#include <QUrl>
#include <KLocalizedString>
#include "phpdocsplugin.h"
#include <documentation/standarddocumentationview.h>
PhpDocumentationWidget::PhpDocumentationWidget(KDevelop::DocumentationFindWidget* find, const QUrl &url,
PhpDocsPlugin* provider, QWidget* parent)
: QStackedWidget(parent)
, m_loading(new QWidget(this))
, m_provider(provider)
{
m_part = new KDevelop::StandardDocumentationView(find, this);
m_part->setDelegateLinks(true);
addWidget(m_part);
addWidget(m_loading);
auto* progressbar = new QProgressBar;
progressbar->setValue(0);
progressbar->setMinimum(0);
progressbar->setMaximum(100);
progressbar->setAlignment(Qt::AlignCenter);
// temporary disabled for initial porting to QWidget-only StandardDocumentationView
#if 0
connect( m_part, &KDevelop::StandardDocumentationView::loadProgress,
progressbar, &QProgressBar::setValue );
#endif
auto* layout = new QVBoxLayout;
layout->addStretch();
QLabel* label = new QLabel(i18n("...loading documentation..."));
label->setAlignment(Qt::AlignCenter);
layout->addWidget(label);
layout->addWidget(progressbar);
layout->addStretch();
m_loading->setLayout(layout);
// temporary disabled for initial porting to QWidget-only StandardDocumentationView
#if 0
setCurrentWidget(m_loading);
#endif
// instead directly show part
setCurrentWidget(m_part);
connect(m_part, &KDevelop::StandardDocumentationView::linkClicked, this, &PhpDocumentationWidget::linkClicked);
// temporary disabled for initial porting to QWidget-only StandardDocumentationView
#if 0
connect(m_part, &KDevelop::StandardDocumentationView::loadFinished, this, &PhpDocumentationWidget::documentLoaded);
#endif
m_part->load( url );
}
PhpDocumentationWidget::~PhpDocumentationWidget()
{
// make sure we don't get called by any of the m_part signals on shutdown, see also:
// https://codereview.qt-project.org/#/c/83800/
disconnect(m_part, nullptr, this, nullptr);
}
void PhpDocumentationWidget::linkClicked(const QUrl& url)
{
m_provider->showDocumentation(url);
}
void PhpDocumentationWidget::documentLoaded()
{
setCurrentWidget(m_part);
removeWidget(m_loading);
delete m_loading;
m_loading = nullptr;
}
#include "moc_phpdocumentationwidget.cpp"
|