#include "aboutdialog.h" #include "ui_aboutdialog.h" #include "common/utils.h" #include "sqlitestudio.h" #include "iconmanager.h" #include "services/extralicensemanager.h" #include #include AboutDialog::AboutDialog(InitialMode initialMode, QWidget *parent) : QDialog(parent), ui(new Ui::AboutDialog) { init(initialMode); } AboutDialog::~AboutDialog() { delete ui; } void AboutDialog::init(InitialMode initialMode) { ui->setupUi(this); ui->leftIcon->setPixmap(ICONS.SQLITESTUDIO_APP.toQIcon().pixmap(200, 200)); ui->tabWidget->setCurrentWidget(initialMode == ABOUT ? ui->about : ui->license); QString distName; switch (getDistributionType()) { case DistributionType::PORTABLE: distName = tr("Portable distribution."); break; case DistributionType::OSX_BOUNDLE: distName = tr("MacOS X application boundle distribution."); break; case DistributionType::OS_MANAGED: distName = tr("Operating system managed distribution."); break; } QString newLabelValue = ui->aboutLabel->text().arg(SQLITESTUDIO->getVersionString(), distName); ui->aboutLabel->setText(newLabelValue); licenseContents = ""; int row = 1; QHash licenses = SQLITESTUDIO->getExtraLicenseManager()->getLicenses(); QHashIterator it(licenses); while (it.hasNext()) { it.next(); readLicense(row++, it.key(), it.value()); } buildIndex(); ui->licenseEdit->setHtml(licenseContents); indexContents.clear(); licenseContents.clear(); } void AboutDialog::buildIndex() { static const QString entryTpl = QStringLiteral("
  • %1
  • "); QStringList entries; for (const QString& idx : indexContents) entries += entryTpl.arg(idx); licenseContents.prepend("

    Table of contents:

      " + entries.join("") + "
    "); } void AboutDialog::readLicense(int row, const QString& title, const QString& path) { QString rowNum = QString::number(row); QString contents = readFile(path); licenseContents += "

    " + rowNum + ". " + title + "

    "; licenseContents += "
    " + contents + "
    "; indexContents += title; } QString AboutDialog::readFile(const QString& path) { QFile file(path); if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Error opening" << file.fileName(); return QString::null; } QString contents = QString::fromLatin1(file.readAll()).toHtmlEscaped(); file.close(); return contents; }