Qt Utilities  5.13.0
Common Qt related C++ classes and routines used by my applications such as dialogs, widgets and models
aboutdialog.cpp
Go to the documentation of this file.
1 #include "./aboutdialog.h"
2 #include "../misc/dialogutils.h"
3 
4 #include "ui_aboutdialog.h"
5 
6 #include <c++utilities/application/argumentparser.h>
7 
8 #include <QApplication>
9 #include <QDesktopWidget>
10 #include <QGraphicsPixmapItem>
11 #include <QStringBuilder>
12 #include <QStyle>
13 
20 namespace Dialogs {
21 
44 AboutDialog::AboutDialog(QWidget *parent, const QString &applicationName, const QString &creator, const QString &version,
45  const std::vector<const char *> &dependencyVersions, const QString &website, const QString &description, const QImage &image)
46  : QDialog(parent)
47  , m_ui(new Ui::AboutDialog)
48 {
49  m_ui->setupUi(this);
50  makeHeading(m_ui->productNameLabel);
51  setStyleSheet(dialogStyle());
52  setWindowFlags(Qt::Tool);
53  if (!applicationName.isEmpty()) {
54  m_ui->productNameLabel->setText(applicationName);
55  } else if (!QApplication::applicationDisplayName().isEmpty()) {
56  m_ui->productNameLabel->setText(QApplication::applicationDisplayName());
57  } else {
58  m_ui->productNameLabel->setText(QApplication::applicationName());
59  }
60  if (creator.startsWith(QLatin1Char('<'))) {
61  // assing rich text as-is
62  m_ui->creatorLabel->setText(creator);
63  } else {
64  // add "developed by " before creator name
65  m_ui->creatorLabel->setText(tr("developed by %1").arg(creator.isEmpty() ? QApplication::organizationName() : creator));
66  }
67  m_ui->versionLabel->setText(version.isEmpty() ? QApplication::applicationVersion() : version);
68  const auto &deps(dependencyVersions.size() ? dependencyVersions : ApplicationUtilities::dependencyVersions2);
69  if (deps.size()) {
70  QStringList linkedAgainst;
71  linkedAgainst.reserve(deps.size());
72  for (const auto &dependencyVersion : deps) {
73  linkedAgainst << QString::fromUtf8(dependencyVersion);
74  }
75  m_ui->versionLabel->setToolTip(QStringLiteral("<p>") % tr("Linked against:") % QStringLiteral("</p><ul><li>")
76  % linkedAgainst.join(QStringLiteral("</li><li>")) % QStringLiteral("</li></ul>"));
77  }
78  m_ui->websiteLabel->setText(tr("For updates and bug reports visit the <a href=\"%1\" "
79  "style=\"text-decoration: underline; color: palette(link);\">project "
80  "website</a>.")
81  .arg(website.isEmpty() ? QApplication::organizationDomain() : website));
82  m_ui->descLabel->setText(description);
83  m_iconScene = new QGraphicsScene(this);
84  auto *item = image.isNull()
85  ? new QGraphicsPixmapItem(QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation, nullptr, this).pixmap(128))
86  : new QGraphicsPixmapItem(QPixmap::fromImage(image));
87  m_iconScene->addItem(item);
88  m_ui->graphicsView->setScene(m_iconScene);
89  setGeometry(QStyle::alignedRect(
90  Qt::LeftToRight, Qt::AlignCenter, size(), parentWidget() ? parentWidget()->geometry() : QApplication::desktop()->availableGeometry()));
91 }
92 
93 AboutDialog::AboutDialog(QWidget *parent, const QString &applicationName, const QString &creator, const QString &version, const QString &website,
94  const QString &description, const QImage &image)
95  : AboutDialog(parent, applicationName, creator, version, {}, website, description, image)
96 {
97 }
98 
99 AboutDialog::AboutDialog(QWidget *parent, const QString &applicationName, const QString &creator, const QString &version,
100  std::initializer_list<const char *> dependencyVersions, const QString &website, const QString &description, const QImage &image)
101  : AboutDialog(parent, applicationName, creator, version, std::vector<const char *>(dependencyVersions), website, description, image)
102 {
103 }
104 
109 AboutDialog::AboutDialog(QWidget *parent, const QString &description, const QImage &image)
110  : AboutDialog(parent, QString(), QString(), QString(), QString(), description, image)
111 {
112 }
113 
118 {
119 }
120 } // namespace Dialogs
~AboutDialog() override
Destroys the about dialog.
AboutDialog(QWidget *parent, const QString &applicationName, const QString &creator, const QString &version, const QString &website=QString(), const QString &description=QString(), const QImage &image=QImage())
Definition: aboutdialog.cpp:93
Provides common dialogs such as AboutDialog, EnterPasswordDialog and SettingsDialog.
Definition: dialogutils.h:12
The AboutDialog class provides a simple about dialog.
Definition: aboutdialog.h:18