Qt Utilities  6.0.2
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 <QMessageBox>
12 #include <QStringBuilder>
13 #include <QStyle>
14 
18 namespace QtUtilities {
19 
41 AboutDialog::AboutDialog(QWidget *parent, const QString &applicationName, const QString &creator, const QString &version,
42  const std::vector<const char *> &dependencyVersions, const QString &website, const QString &description, const QImage &image)
43  : QDialog(parent)
44  , m_ui(new Ui::AboutDialog)
45 {
46  m_ui->setupUi(this);
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());
54  } else {
55  m_ui->productNameLabel->setText(QApplication::applicationName());
56  }
57  if (creator.startsWith(QLatin1Char('<'))) {
58  // assing rich text as-is
59  m_ui->creatorLabel->setText(creator);
60  } else {
61  // add "developed by " before creator name
62  m_ui->creatorLabel->setText(tr("developed by %1").arg(creator.isEmpty() ? QApplication::organizationName() : creator));
63  }
64  m_ui->versionLabel->setText(version.isEmpty() ? QApplication::applicationVersion() : version);
65  const auto &deps(dependencyVersions.size() ? dependencyVersions : CppUtilities::applicationInfo.dependencyVersions);
66  if (!deps.empty()) {
67  QStringList linkedAgainst;
68  linkedAgainst.reserve(static_cast<int>(deps.size()));
69  for (const auto &dependencyVersion : deps) {
70  linkedAgainst << QString::fromUtf8(dependencyVersion);
71  }
72  m_ui->versionLabel->setToolTip(QStringLiteral("<p>") % tr("Linked against:") % QStringLiteral("</p><ul><li>")
73  % linkedAgainst.join(QStringLiteral("</li><li>")) % QStringLiteral("</li></ul>"));
74  }
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 "
78  "website</a>.")
79  .arg(!website.isEmpty() ? website : QString::fromUtf8(CppUtilities::applicationInfo.url)));
80  } else {
81  m_ui->websiteLabel->hide();
82  }
83  m_ui->descLabel->setText(description.isEmpty() && CppUtilities::applicationInfo.description
84  ? QString::fromUtf8(CppUtilities::applicationInfo.description)
85  : 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());
95 }
96 
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)
103 {
104 }
105 
110 AboutDialog::AboutDialog(QWidget *parent, const QString &website, const QString &description, const QImage &image)
111  : AboutDialog(parent, QString(), QString(), QString(), website, description, image)
112 {
113 }
114 
119 {
120 }
121 
122 void AboutDialog::linkActivated(const QString &link)
123 {
124  if (link == QLatin1String("qtversion")) {
125  QMessageBox::aboutQt(nullptr);
126  }
127 }
128 
129 } // namespace QtUtilities
QtUtilities::AboutDialog::AboutDialog
AboutDialog(QWidget *parent, const QString &applicationName, const QString &creator, const QString &version, const QString &website=QString(), const QString &description=QString(), const QImage &image=QImage())
Constructs an about dialog with the specified information.
Definition: aboutdialog.cpp:100
aboutdialog.h
QtUtilities
!
Definition: trylocker.h:8
QtUtilities::AboutDialog::~AboutDialog
~AboutDialog() override
Destroys the about dialog.
Definition: aboutdialog.cpp:118
QtUtilities::AboutDialog
The AboutDialog class provides a simple about dialog.
Definition: aboutdialog.h:18