1 /*
2     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include "journaldLogMode.h"
8 
9 #include <QAction>
10 
11 #include <KLocalizedString>
12 
13 #include "ksystemlog_debug.h"
14 
15 #include "journaldConfiguration.h"
16 #include "journaldConfigurationWidget.h"
17 #include "journaldItemBuilder.h"
18 #include "journaldLocalAnalyzer.h"
19 #include "journaldNetworkAnalyzer.h"
20 
JournaldLogMode()21 JournaldLogMode::JournaldLogMode()
22     : LogMode(QLatin1String(JOURNALD_LOG_MODE_ID), i18n("Journald Log"), QLatin1String(JOURNALD_MODE_ICON))
23 {
24     d->logModeConfiguration = QSharedPointer<JournaldConfiguration>(new JournaldConfiguration());
25 
26     d->logModeConfigurationWidget = new JournaldConfigurationWidget();
27     connect(qobject_cast<JournaldConfigurationWidget *>(d->logModeConfigurationWidget),
28             &JournaldConfigurationWidget::configSaved,
29             this,
30             &JournaldLogMode::menuChanged);
31 
32     d->itemBuilder = new JournaldItemBuilder();
33 
34     d->action = createDefaultAction();
35     d->action->setToolTip(i18n("Display the Journald log."));
36     d->action->setWhatsThis(i18n("Displays the journald log in the current tab."));
37 }
38 
createAnalyzer(const QVariant & analyzerOptions)39 Analyzer *JournaldLogMode::createAnalyzer(const QVariant &analyzerOptions)
40 {
41     JournaldAnalyzerOptions options = analyzerOptions.value<JournaldAnalyzerOptions>();
42     switch (options.analyzerType) {
43     case JournaldAnalyzerType::Local:
44         return new JournaldLocalAnalyzer(this, options.filter);
45     case JournaldAnalyzerType::Network:
46         return new JournaldNetworkAnalyzer(this, options);
47     }
48 
49     return new JournaldLocalAnalyzer(this);
50 }
51 
createLogFiles()52 QVector<LogFile> JournaldLogMode::createLogFiles()
53 {
54     // No log file for journald.
55     return QVector<LogFile>();
56 }
57 
updateJournalFilters(const JournalAddress & address,const JournalFilters & filters)58 void JournaldLogMode::updateJournalFilters(const JournalAddress &address, const JournalFilters &filters)
59 {
60     mRemoteJournalFilters[address] = filters;
61 }
62 
filters(const JournalAddress & address) const63 JournalFilters JournaldLogMode::filters(const JournalAddress &address) const
64 {
65     return mRemoteJournalFilters[address];
66 }
67