/**************************************************************************** ** ** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "widget.h" #include "ui_widget.h" #include #include #include #include #ifndef QT_NO_DESKTOPSERVICES #include #endif #ifndef QT_NO_PRINTER #include #include #include #endif // This manual test allows checking the QTextTable border logic (QTBUG-36152) Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); resize(1400, 800); connect(ui->docComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &Widget::onDocumentSelected); connect(ui->printButton, &QPushButton::clicked, this, &Widget::onPrint); connect(ui->previewButton, &QPushButton::clicked, this, &Widget::onPreview); connect(ui->openBrowserButton, &QPushButton::clicked, this, &Widget::onOpenBrowser); connect(ui->sourceEdit, &QTextEdit::textChanged, this, [this]() { // make this a world class HTML IDE auto pos = ui->htmlEdit->verticalScrollBar()->value(); ui->htmlEdit->setHtml(ui->sourceEdit->toPlainText()); ui->htmlEdit->verticalScrollBar()->setValue(pos); }); ui->docComboBox->addItem(tr("Table Border Test"), ":/table-border-test.html"); ui->docComboBox->addItem(tr("Table Border Header Test"), ":/table-border-test-header.html"); ui->docComboBox->setCurrentIndex(0); } Widget::~Widget() { delete ui; } void Widget::onDocumentSelected() { QString url = ui->docComboBox->itemData(ui->docComboBox->currentIndex()).toString(); QFile f(url); if (f.open(QFile::ReadOnly)) { ui->sourceEdit->setPlainText(QString::fromUtf8(f.readAll())); // preview HTML is set via textChanged signal } } void Widget::onPrint() { #ifndef QT_NO_PRINTER QPrinter printer(QPrinter::HighResolution); QPrintDialog dlg(&printer, this); if (ui->htmlEdit->textCursor().hasSelection()) dlg.addEnabledOption(QAbstractPrintDialog::PrintSelection); dlg.setWindowTitle(tr("Print Document")); if (dlg.exec() == QDialog::Accepted) { ui->htmlEdit->print(&printer); } #endif } void Widget::onPreview() { #ifndef QT_NO_PRINTER QPrinter printer(QPrinter::HighResolution); QPrintPreviewDialog preview(&printer, this); connect(&preview, &QPrintPreviewDialog::paintRequested, ui->htmlEdit, &QTextEdit::print); preview.exec(); #endif } void Widget::onOpenBrowser() { // write the current html to a temp file and open the system browser #ifndef QT_NO_DESKTOPSERVICES auto tf = new QTemporaryFile(QDir::tempPath() + "/XXXXXX.html", this); if (tf->open()) { tf->write(ui->sourceEdit->toPlainText().toUtf8()); tf->close(); QDesktopServices::openUrl(QUrl::fromLocalFile(tf->fileName())); } #endif }