|
|
|
@ -17,6 +17,7 @@ |
|
|
|
|
#include "about.h" |
|
|
|
|
#include "ui_about.h" |
|
|
|
|
#include <QXmppGlobal.h> |
|
|
|
|
#include <QDebug> |
|
|
|
|
|
|
|
|
|
static const std::string QXMPP_VERSION_PATCH(std::to_string(QXMPP_VERSION & 0xff)); |
|
|
|
|
static const std::string QXMPP_VERSION_MINOR(std::to_string((QXMPP_VERSION & 0xff00) >> 8)); |
|
|
|
@ -37,6 +38,71 @@ About::About(QWidget* parent): |
|
|
|
|
m_ui->qxmppBuiltAgainstVersion->setText(tr("(built against %1)").arg(QXMPP_VERSION_STRING)); |
|
|
|
|
|
|
|
|
|
setWindowFlag(Qt::Tool); |
|
|
|
|
|
|
|
|
|
connect(m_ui->licenceLink, &QLabel::linkActivated, this, &About::onLicenseActivated); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
About::~About() { |
|
|
|
|
if (license != nullptr) { |
|
|
|
|
license->deleteLater(); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
void About::onLicenseActivated() |
|
|
|
|
{ |
|
|
|
|
if (license == nullptr) { |
|
|
|
|
QFile file; |
|
|
|
|
bool found = false; |
|
|
|
|
QStringList shares = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation); |
|
|
|
|
for (const QString& path : shares) { |
|
|
|
|
file.setFileName(path + "/LICENSE.md"); |
|
|
|
|
|
|
|
|
|
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { |
|
|
|
|
found = true; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (!found) { |
|
|
|
|
qDebug() << "couldn't read license file, bailing"; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
license = new QWidget(); |
|
|
|
|
license->setWindowTitle(tr("License")); |
|
|
|
|
QVBoxLayout* layout = new QVBoxLayout(license); |
|
|
|
|
QLabel* text = new QLabel(license); |
|
|
|
|
QScrollArea* area = new QScrollArea(license); |
|
|
|
|
text->setTextFormat(Qt::MarkdownText); |
|
|
|
|
text->setWordWrap(true); |
|
|
|
|
text->setOpenExternalLinks(true); |
|
|
|
|
text->setMargin(5); |
|
|
|
|
area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); |
|
|
|
|
|
|
|
|
|
layout->addWidget(area); |
|
|
|
|
license->setAttribute(Qt::WA_DeleteOnClose); |
|
|
|
|
connect(license, &QWidget::destroyed, this, &About::onLicenseClosed); |
|
|
|
|
|
|
|
|
|
QTextStream in(&file); |
|
|
|
|
QString line; |
|
|
|
|
QString licenseText(""); |
|
|
|
|
while (!in.atEnd()) { |
|
|
|
|
line = in.readLine(); |
|
|
|
|
licenseText.append(line + "\n"); |
|
|
|
|
} |
|
|
|
|
text->setText(licenseText); |
|
|
|
|
file.close(); |
|
|
|
|
|
|
|
|
|
area->setWidget(text); |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
license->raise(); |
|
|
|
|
license->activateWindow(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
license->show(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
About::~About() = default; |
|
|
|
|
void About::onLicenseClosed() |
|
|
|
|
{ |
|
|
|
|
license = nullptr; |
|
|
|
|
} |
|
|
|
|