diff options
author | Dominik Holland <dominik.holland@pelagicore.com> | 2016-05-02 17:29:40 +0200 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2016-08-10 15:47:52 +0000 |
commit | eea2754976a6b4363be7575c7082a4df92e1217e (patch) | |
tree | 1bac225a875e726999af2c91ce58d3743557608a /src/qml/qml/v8/qqmlbuiltinfunctions.cpp | |
parent | a3aad1a470dc9cb1feea7c6b3bf35f725a6b898d (diff) |
Added Logging Category support to QML
New Logging Categories can be defined by using the
LoggingCategory type and define a name for the category
When the id of a valid LoggingCategory is provided as
the first argument to console.log and friends the
LoggingCategory is used instead of the default "qml"
LoggingCategory
[ChangeLog][QML Elements] Added a LoggingCategory type and added support
for it to the console object
Change-Id: Ifaeed5f71de6ea6d8172d8c838d6e7789c4d6b9d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/qml/v8/qqmlbuiltinfunctions.cpp')
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index 76a900c846..edc83b3bf1 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -42,6 +42,7 @@ #include <QtQml/qqmlcomponent.h> #include <private/qqmlengine_p.h> #include <private/qqmlcomponent_p.h> +#include <private/qqmlloggingcategory_p.h> #include <private/qqmlstringconverters_p.h> #include <private/qqmllocale_p.h> #include <private/qv8engine_p.h> @@ -76,6 +77,8 @@ #include <QtCore/qcoreapplication.h> #include <QtCore/qloggingcategory.h> +#include <QDebug> + QT_BEGIN_NAMESPACE using namespace QV4; @@ -1464,11 +1467,26 @@ static QString jsStack(QV4::ExecutionEngine *engine) { static QV4::ReturnedValue writeToConsole(ConsoleLogTypes logType, CallContext *ctx, bool printStack = false) { + QLoggingCategory *loggingCategory = 0; QString result; QV4::ExecutionEngine *v4 = ctx->d()->engine; - for (int i = 0; i < ctx->argc(); ++i) { - if (i != 0) + int start = 0; + if (ctx->argc() > 0) { + if (const QObjectWrapper* wrapper = ctx->args()[0].as<QObjectWrapper>()) { + if (QQmlLoggingCategory* category = qobject_cast<QQmlLoggingCategory*>(wrapper->object())) { + if (category->category()) + loggingCategory = category->category(); + else + V4THROW_ERROR("A QmlLoggingCatgory was provided without a valid name"); + start = 1; + } + } + } + + + for (int i = start; i < ctx->argc(); ++i) { + if (i != start) result.append(QLatin1Char(' ')); if (ctx->args()[i].as<ArrayObject>()) @@ -1485,7 +1503,8 @@ static QV4::ReturnedValue writeToConsole(ConsoleLogTypes logType, CallContext *c static QLoggingCategory qmlLoggingCategory("qml"); static QLoggingCategory jsLoggingCategory("js"); - QLoggingCategory *loggingCategory = v4->qmlEngine() ? &qmlLoggingCategory : &jsLoggingCategory; + if (!loggingCategory) + loggingCategory = v4->qmlEngine() ? &qmlLoggingCategory : &jsLoggingCategory; QV4::StackFrame frame = v4->currentStackFrame(); const QByteArray baSource = frame.source.toUtf8(); const QByteArray baFunction = frame.function.toUtf8(); |