File indexing completed on 2024-04-21 05:46:11

0001 /*
0002     SPDX-FileCopyrightText: 2010 Volker Lanz <vl@fidra.de>
0003     SPDX-FileCopyrightText: 2014-2017 Andrius Štikonas <andrius@stikonas.eu>
0004 
0005     SPDX-License-Identifier: GPL-3.0-or-later
0006 */
0007 
0008 #include "util/htmlreport.h"
0009 
0010 #include "backend/corebackend.h"
0011 #include "backend/corebackendmanager.h"
0012 
0013 #include <QApplication>
0014 #include <QDateTime>
0015 #include <QString>
0016 #include <QTextStream>
0017 #include <QTextDocument>
0018 
0019 #include <KAboutData>
0020 #include <KLocalizedString>
0021 #include <ki18n_version.h>
0022 
0023 #include <sys/utsname.h>
0024 
0025 QString HtmlReport::tableLine(const QString& label, const QString contents)
0026 {
0027     QString rval;
0028     QTextStream s(&rval);
0029 
0030     s << "<tr>\n"
0031       << QStringLiteral("<td style='font-weight:bold;padding-right:20px;'>%1</td>\n").arg(QString(label).toHtmlEscaped())
0032       << QStringLiteral("<td>%1</td>\n").arg(QString(contents).toHtmlEscaped())
0033       << "</tr>\n";
0034 
0035     s.flush();
0036 
0037     return rval;
0038 }
0039 
0040 QString HtmlReport::header()
0041 {
0042     QString rval;
0043     QTextStream s(&rval);
0044 
0045     s <<
0046       "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"
0047       "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
0048       "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n"
0049       "<head>\n"
0050       " <title>"
0051       << i18n("%1: SMART Status Report", QGuiApplication::applicationDisplayName().toHtmlEscaped())
0052       << "</title>\n"
0053       " <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"/>\n"
0054       "</head>\n\n"
0055       "<body>\n";
0056 
0057     s << "<h1>"
0058       << i18n("%1: SMART Status Report", QGuiApplication::applicationDisplayName().toHtmlEscaped())
0059       << "</h1>\n\n";
0060 
0061     struct utsname info;
0062     uname(&info);
0063     const QString unameString = QString::fromLocal8Bit(info.sysname) + QStringLiteral(" ") + QString::fromLocal8Bit(info.nodename) + QStringLiteral(" ") + QString::fromLocal8Bit(info.release) + QStringLiteral(" ") + QString::fromLocal8Bit(info.version) + QStringLiteral(" ") + QString::fromLocal8Bit(info.machine);
0064 
0065     s << "<table>\n"
0066       << tableLine(i18n("Date:"), QLocale().toString(QDateTime::currentDateTime(), QLocale::ShortFormat))
0067       << tableLine(i18n("Program version:"), QCoreApplication::applicationVersion())
0068       << tableLine(i18n("Backend:"), QStringLiteral("%1 (%2)").arg(CoreBackendManager::self()->backend()->id()).arg(CoreBackendManager::self()->backend()->version()))
0069       << tableLine(i18n("KDE Frameworks version:"), QStringLiteral(KI18N_VERSION_STRING))
0070       << tableLine(i18n("Machine:"), unameString)
0071       << "</table>\n<br/>\n";
0072 
0073     s << "<table>\n";
0074 
0075     s.flush();
0076 
0077     return rval;
0078 }
0079 
0080 QString HtmlReport::footer()
0081 {
0082     return QStringLiteral("\n\n</body>\n</html>\n");
0083 }