diff options
Diffstat (limited to 'src/libs/installer/init.cpp')
-rw-r--r-- | src/libs/installer/init.cpp | 100 |
1 files changed, 5 insertions, 95 deletions
diff --git a/src/libs/installer/init.cpp b/src/libs/installer/init.cpp index c1326824a..4aa65296f 100644 --- a/src/libs/installer/init.cpp +++ b/src/libs/installer/init.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -47,24 +47,14 @@ #include "licenseoperation.h" #include "settingsoperation.h" #include "consumeoutputoperation.h" -#include "globals.h" +#include "loggingutils.h" #include "lib7z_facade.h" -#include "utils.h" #include "updateoperationfactory.h" #include "filedownloaderfactory.h" #include <QtPlugin> -#include <QElapsedTimer> - -#include <iostream> - -#if defined(Q_OS_UNIX) -#include <unistd.h> -#elif defined(Q_OS_WIN) -#include <fileapi.h> -#endif using namespace KDUpdater; using namespace QInstaller; @@ -76,84 +66,6 @@ static void initResources() } #endif -static bool s_outputRedirected = false; - -static QString trimAndPrepend(QtMsgType type, const QString &msg) -{ - QString ba(msg); - // last character is a space from qDebug - if (ba.endsWith(QLatin1Char(' '))) - ba.chop(1); - - // remove quotes if the whole message is surrounded with them - if (ba.startsWith(QLatin1Char('"')) && ba.endsWith(QLatin1Char('"'))) - ba = ba.mid(1, ba.length() - 2); - - // prepend the message type, skip QtDebugMsg - switch (type) { - case QtWarningMsg: - ba.prepend(QStringLiteral("Warning: ")); - break; - - case QtCriticalMsg: - ba.prepend(QStringLiteral("Critical: ")); - break; - - case QtFatalMsg: - ba.prepend(QStringLiteral("Fatal: ")); - break; - - default: - break; - } - return ba; -} - -// start timer on construction (so we can use it as static member) -class Uptime : public QElapsedTimer { -public: - Uptime() { start(); } -}; - -void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) -{ - // suppress warning from QPA minimal plugin - if (msg.contains(QLatin1String("This plugin does not support propagateSizeHints"))) - return; - - if (context.category == lcProgressIndicator().categoryName()) { - if (!s_outputRedirected) - std::cout << msg.toStdString() << "\r" << std::flush; - return; - } - - static Uptime uptime; - - QString ba; - if (context.category != lcPackageInfo().categoryName()) { - ba = QLatin1Char('[') + QString::number(uptime.elapsed()) + QStringLiteral("] "); - } - ba += trimAndPrepend(type, msg); - - if (type != QtDebugMsg && context.file) { - ba += QString(QStringLiteral(" (%1:%2, %3)")).arg( - QString::fromLatin1(context.file)).arg(context.line).arg( - QString::fromLatin1(context.function)); - } - - if (VerboseWriter *log = VerboseWriter::instance()) - log->appendLine(ba); - - if (type != QtDebugMsg || isVerbose()) - std::cout << qPrintable(ba) << std::endl; - - if (type == QtFatalMsg) { - QtMessageHandler oldMsgHandler = qInstallMessageHandler(nullptr); - qt_message_output(type, context, msg); - qInstallMessageHandler(oldMsgHandler); - } -} - /*! Initializes the 7z library and installer resources. Registers custom operations and installs a custom message handler. @@ -190,10 +102,8 @@ void QInstaller::init() FileDownloaderFactory::setFollowRedirects(true); -#if defined(Q_OS_UNIX) - s_outputRedirected = !isatty(fileno(stdout)); -#elif defined(Q_OS_WIN) - s_outputRedirected = (GetFileType(GetStdHandle(STD_OUTPUT_HANDLE)) == FILE_TYPE_DISK); -#endif + auto messageHandler = [](QtMsgType type, const QMessageLogContext &context, const QString &msg) { + LoggingHandler::instance().messageHandler(type, context, msg); + }; qInstallMessageHandler(messageHandler); } |