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 }