2 #include "../misc/dialogutils.h"
4 #include "ui_aboutdialog.h"
6 #include <c++utilities/application/argumentparser.h>
8 #include <QApplication>
9 #include <QDesktopWidget>
10 #include <QGraphicsPixmapItem>
11 #include <QMessageBox>
12 #include <QStringBuilder>
42 const std::vector<const char *> &dependencyVersions,
const QString &website,
const QString &description,
const QImage &image)
47 makeHeading(m_ui->productNameLabel);
48 setStyleSheet(dialogStyle());
49 setWindowFlags(Qt::Tool);
50 if (!applicationName.isEmpty()) {
51 m_ui->productNameLabel->setText(applicationName);
52 }
else if (!QApplication::applicationDisplayName().isEmpty()) {
53 m_ui->productNameLabel->setText(QApplication::applicationDisplayName());
55 m_ui->productNameLabel->setText(QApplication::applicationName());
57 if (creator.startsWith(QLatin1Char(
'<'))) {
59 m_ui->creatorLabel->setText(creator);
62 m_ui->creatorLabel->setText(tr(
"developed by %1").arg(creator.isEmpty() ? QApplication::organizationName() : creator));
64 m_ui->versionLabel->setText(version.isEmpty() ? QApplication::applicationVersion() : version);
65 const auto &deps(dependencyVersions.size() ? dependencyVersions : CppUtilities::applicationInfo.dependencyVersions);
67 QStringList linkedAgainst;
68 linkedAgainst.reserve(static_cast<int>(deps.size()));
69 for (
const auto &dependencyVersion : deps) {
70 linkedAgainst << QString::fromUtf8(dependencyVersion);
72 m_ui->versionLabel->setToolTip(QStringLiteral(
"<p>") % tr(
"Linked against:") % QStringLiteral(
"</p><ul><li>")
73 % linkedAgainst.join(QStringLiteral(
"</li><li>")) % QStringLiteral(
"</li></ul>"));
75 if (!website.isEmpty() || CppUtilities::applicationInfo.url) {
76 m_ui->websiteLabel->setText(tr(
"For updates and bug reports visit the <a href=\"%1\" "
77 "style=\"text-decoration: underline; color: palette(link);\">project "
79 .arg(!website.isEmpty() ? website : QString::fromUtf8(CppUtilities::applicationInfo.url)));
81 m_ui->websiteLabel->hide();
83 m_ui->descLabel->setText(description.isEmpty() && CppUtilities::applicationInfo.description
84 ? QString::fromUtf8(CppUtilities::applicationInfo.description)
86 m_iconScene =
new QGraphicsScene(
this);
87 auto *item = image.isNull()
88 ?
new QGraphicsPixmapItem(QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation,
nullptr,
this).pixmap(128))
89 :
new QGraphicsPixmapItem(QPixmap::fromImage(image));
90 m_iconScene->addItem(item);
91 m_ui->graphicsView->setScene(m_iconScene);
92 m_ui->qtVersionLabel->setText(tr(
"using <a href=\"qtversion\">Qt %1</a>").arg(QString::fromUtf8(qVersion())));
93 connect(m_ui->qtVersionLabel, &QLabel::linkActivated,
this, &AboutDialog::linkActivated);
94 centerWidget(
this, parentWidget());
100 AboutDialog::AboutDialog(QWidget *parent,
const QString &applicationName,
const QString &creator,
const QString &version,
const QString &website,
101 const QString &description,
const QImage &image)
102 :
AboutDialog(parent, applicationName, creator, version, {}, website, description, image)
111 :
AboutDialog(parent, QString(), QString(), QString(), website, description, image)
122 void AboutDialog::linkActivated(
const QString &link)
124 if (link == QLatin1String(
"qtversion")) {
125 QMessageBox::aboutQt(
nullptr);