blob: df790de11caa2cf091cdb71137e55ae165f98d9e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
#include "aboutdialog.h"
#include "ui_aboutdialog.h"
#include "common/utils.h"
#include "sqlitestudio.h"
#include "iconmanager.h"
#include "services/extralicensemanager.h"
#include <QDebug>
#include <QFile>
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<QString,QString> licenses = SQLITESTUDIO->getExtraLicenseManager()->getLicenses();
QHashIterator<QString,QString> 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("<li>%1</li>");
QStringList entries;
for (const QString& idx : indexContents)
entries += entryTpl.arg(idx);
licenseContents.prepend("<h3>Table of contents:</h3><ol>" + entries.join("") + "</ol>");
}
void AboutDialog::readLicense(int row, const QString& title, const QString& path)
{
QString rowNum = QString::number(row);
QString contents = readFile(path);
licenseContents += "<h3>" + rowNum + ". " + title + "</h3>";
licenseContents += "<pre>" + contents + "</pre>";
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;
}
|