File indexing completed on 2024-05-19 05:49:15

0001 /*
0002     KCupsLog, a cups log viewer tool
0003     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "cupsFactory.h"
0009 
0010 #include <KLocalizedString>
0011 
0012 #include "ksystemlog_debug.h"
0013 #include "logMode.h"
0014 #include "multipleActions.h"
0015 
0016 #include "cupsAccessLogMode.h"
0017 #include "cupsLogMode.h"
0018 #include "cupsPageLogMode.h"
0019 #include "cupsPdfLogMode.h"
0020 
0021 #include "cupsConfiguration.h"
0022 #include "cupsConfigurationWidget.h"
0023 
0024 QList<LogMode *> CupsLogModeFactory::createLogModes() const
0025 {
0026     // Create the shared configuration and configuration widget between the logModes
0027     QSharedPointer<CupsConfiguration> logModeConfiguration = QSharedPointer<CupsConfiguration>(new CupsConfiguration());
0028     auto logModeConfigurationWidget = new CupsConfigurationWidget();
0029 
0030     QList<LogMode *> logModes;
0031     logModes.append(new CupsLogMode(logModeConfiguration, logModeConfigurationWidget));
0032     logModes.append(new CupsAccessLogMode(logModeConfiguration, logModeConfigurationWidget));
0033     logModes.append(new CupsPageLogMode(logModeConfiguration, logModeConfigurationWidget));
0034     logModes.append(new CupsPdfLogMode(logModeConfiguration, logModeConfigurationWidget));
0035 
0036     return logModes;
0037 }
0038 
0039 LogModeAction *CupsLogModeFactory::createLogModeAction() const
0040 {
0041     LogMode *cupsLogMode = Globals::instance().findLogMode(QStringLiteral(CUPS_LOG_MODE_ID));
0042     LogMode *cupsAccessLogMode = Globals::instance().findLogMode(QStringLiteral(CUPS_ACCESS_LOG_MODE_ID));
0043     LogMode *cupsPageLogMode = Globals::instance().findLogMode(QStringLiteral(CUPS_PAGE_LOG_MODE_ID));
0044     LogMode *cupsPdfLogMode = Globals::instance().findLogMode(QStringLiteral(CUPS_PDF_LOG_MODE_ID));
0045 
0046     bool const cupsLogsExist = cupsLogMode->filesExist();
0047     bool const cupsAccessLogsExist = cupsAccessLogMode->filesExist();
0048     bool const cupsPageLogsExist = cupsPageLogMode->filesExist();
0049     bool const cupsPdfLogsExist = cupsPdfLogMode->filesExist();
0050 
0051     if (!cupsLogsExist && !cupsAccessLogsExist && !cupsPageLogsExist && !cupsPdfLogsExist) {
0052         return nullptr;
0053     }
0054 
0055     auto multipleActions = new MultipleActions(QIcon::fromTheme(QStringLiteral(CUPS_MODE_ICON)), i18n("Cups"), cupsLogMode);
0056 
0057     if (cupsLogsExist) {
0058         multipleActions->addInnerAction(cupsLogMode->action());
0059     }
0060 
0061     if (cupsAccessLogsExist) {
0062         multipleActions->addInnerAction(cupsAccessLogMode->action());
0063     }
0064 
0065     if (cupsPageLogsExist) {
0066         multipleActions->addInnerAction(cupsPageLogMode->action());
0067     }
0068 
0069     if (cupsPdfLogsExist) {
0070         multipleActions->addInnerAction(cupsPdfLogMode->action());
0071     }
0072 
0073     multipleActions->setCategory(LogModeAction::ServicesCategory);
0074 
0075     return multipleActions;
0076 }
0077 
0078 #include "moc_cupsFactory.cpp"