File indexing completed on 2024-05-05 05:48:57

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "logModeItemBuilder.h"
0008 
0009 #include <KLocalizedString>
0010 
0011 #include "ksystemlog_debug.h"
0012 
0013 #include "logLine.h"
0014 #include "logMode.h"
0015 #include "logViewWidgetItem.h"
0016 
0017 #include "ksystemlogConfig.h"
0018 
0019 LogModeItemBuilder::LogModeItemBuilder()
0020 {
0021 }
0022 
0023 LogModeItemBuilder::~LogModeItemBuilder()
0024 {
0025 }
0026 
0027 QString LogModeItemBuilder::formatDate(const QDateTime &dateTime) const
0028 {
0029     return Globals::instance().formatDate((Globals::DateFormat)KSystemLogConfig::dateFormat(), dateTime);
0030 }
0031 
0032 void LogModeItemBuilder::prepareItem(LogViewWidgetItem *item) const
0033 {
0034     LogLine *line = item->logLine();
0035 
0036     item->setText(0, formatDate(line->time()));
0037     item->setData(0, Qt::UserRole, line->logLevel()->id());
0038 
0039     int i = 1;
0040     const QStringList logItems = line->logItems();
0041     for (const QString &label : logItems) {
0042         item->setText(i, label);
0043         i++;
0044     }
0045 
0046     item->setIcon(0, line->logLevel()->icon());
0047 }
0048 
0049 QString LogModeItemBuilder::createFormattedText(LogLine *line) const
0050 {
0051     QString result;
0052 
0053     QListIterator<QString> it(line->logItems());
0054 
0055     result.append(QLatin1String("<table>"));
0056 
0057     result.append(labelMessageFormat(i18n("Date:"), formatDate(line->time())));
0058     result.append(labelMessageFormat(i18n("Hostname:"), it.next()));
0059     result.append(labelMessageFormat(i18n("Process:"), it.next()));
0060     result.append(labelMessageFormat(i18n("Level:"), line->logLevel()->name()));
0061     result.append(labelMessageFormat(i18n("Original file:"), line->sourceFileName()));
0062 
0063     result.append(QLatin1String("</table>"));
0064 
0065     return result;
0066 }
0067 
0068 QString LogModeItemBuilder::createToolTipText(LogLine *line) const
0069 {
0070     QString result;
0071 
0072     result.append(QLatin1String("<table>"));
0073 
0074     result.append(labelMessageFormat(i18n("Date:"), formatDate(line->time())));
0075     result.append(labelMessageFormat(i18n("Level:"), line->logLevel()->name()));
0076     result.append(labelMessageFormat(i18n("Original file:"), line->sourceFileName()));
0077 
0078     result.append(QLatin1String("</table>"));
0079 
0080     return result;
0081 }
0082 
0083 QString LogModeItemBuilder::labelMessageFormat(const QString &label, const QString &value) const
0084 {
0085     return QLatin1String("<tr><td align='right'><b><nobr>") + label + QLatin1String("</nobr></b></td><td>") + messageFormat(value)
0086         + QLatin1String("</td></tr>");
0087 }
0088 
0089 QString LogModeItemBuilder::messageFormat(const QString &message) const
0090 {
0091     QString transformation(message);
0092     transformation.replace(QStringLiteral("&"), QStringLiteral("&amp;"));
0093     transformation.replace(QStringLiteral("<"), QStringLiteral("&lt;"));
0094     transformation.replace(QStringLiteral(">"), QStringLiteral("&gt;"));
0095     return transformation;
0096 }