1 | /* |
2 | This file is part of the KDE libraries |
3 | SPDX-FileCopyrightText: 2007 Urs Wolfer <uwolfer at kde.org> |
4 | SPDX-FileCopyrightText: 2008 Friedrich W. H. Kossebau <kossebau@kde.org> |
5 | SPDX-FileCopyrightText: 2010 Teo Mrnjavac <teo@kde.org> |
6 | |
7 | Parts of this class have been take from the KAboutApplication class, which was |
8 | SPDX-FileCopyrightText: 2000 Waldo Bastian <bastian@kde.org> |
9 | SPDX-FileCopyrightText: 2000 Espen Sand <espen@kde.org> |
10 | |
11 | SPDX-License-Identifier: LGPL-2.0-only |
12 | */ |
13 | |
14 | #include "klicensedialog_p.h" |
15 | |
16 | // KF |
17 | #include <KAboutData> |
18 | #include <KLocalizedString> |
19 | // Qt |
20 | #include <QDialogButtonBox> |
21 | #include <QFontDatabase> |
22 | #include <QScrollBar> |
23 | #include <QStyle> |
24 | #include <QTextBrowser> |
25 | #include <QVBoxLayout> |
26 | |
27 | KLicenseDialog::KLicenseDialog(const KAboutLicense &license, QWidget *parent) |
28 | : QDialog(parent) |
29 | { |
30 | setAttribute(Qt::WA_DeleteOnClose); |
31 | QVBoxLayout *layout = new QVBoxLayout(this); |
32 | |
33 | setWindowTitle(i18nc("@title:window" , "License Agreement" )); |
34 | |
35 | const QFont font = QFontDatabase::systemFont(type: QFontDatabase::FixedFont); |
36 | |
37 | const QString licenseText = license.text(); |
38 | |
39 | QTextBrowser *licenseBrowser = new QTextBrowser(this); |
40 | licenseBrowser->setFont(font); |
41 | licenseBrowser->setLineWrapMode(QTextEdit::NoWrap); |
42 | licenseBrowser->setText(licenseText); |
43 | layout->addWidget(licenseBrowser); |
44 | |
45 | QDialogButtonBox *buttonBox = new QDialogButtonBox(this); |
46 | buttonBox->setStandardButtons(QDialogButtonBox::Close); |
47 | connect(sender: buttonBox, signal: &QDialogButtonBox::accepted, context: this, slot: &QDialog::accept); |
48 | connect(sender: buttonBox, signal: &QDialogButtonBox::rejected, context: this, slot: &QDialog::reject); |
49 | layout->addWidget(buttonBox); |
50 | |
51 | // try to set up the dialog such that the full width of the |
52 | // document is visible without horizontal scroll-bars being required |
53 | auto *style = this->style(); |
54 | const int leftMarginHint = style->pixelMetric(metric: QStyle::PM_LayoutLeftMargin); |
55 | const int rightMarginHint = style->pixelMetric(metric: QStyle::PM_LayoutRightMargin); |
56 | const qreal idealWidth = licenseBrowser->document()->idealWidth() + leftMarginHint + rightMarginHint + licenseBrowser->verticalScrollBar()->width() * 2; |
57 | |
58 | // try to allow enough height for a reasonable number of lines to be shown |
59 | QFontMetrics metrics(font); |
60 | const int idealHeight = metrics.height() * 30; |
61 | |
62 | resize(sizeHint().expandedTo(otherSize: QSize(qRound(d: idealWidth), idealHeight))); |
63 | } |
64 | |
65 | KLicenseDialog::~KLicenseDialog() = default; |
66 | |
67 | #include "moc_klicensedialog_p.cpp" |
68 | |