diff options
Diffstat (limited to 'src/shared/lsp/progresssupport.cpp')
-rw-r--r-- | src/shared/lsp/progresssupport.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/shared/lsp/progresssupport.cpp b/src/shared/lsp/progresssupport.cpp new file mode 100644 index 000000000..6a554b4f4 --- /dev/null +++ b/src/shared/lsp/progresssupport.cpp @@ -0,0 +1,54 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#include "progresssupport.h" + +#include <QUuid> + +namespace lsp { + +ProgressToken::ProgressToken(const QJsonValue &value) +{ + if (!QBS_GUARD(value.isDouble() || value.isString())) + emplace<QString>(QUuid::createUuid().toString()); + else if (value.isDouble()) + emplace<int>(value.toInt()); + else + emplace<QString>(value.toString()); +} + +ProgressToken::operator QJsonValue() const +{ + if (std::holds_alternative<QString>(*this)) + return QJsonValue(std::get<QString>(*this)); + return QJsonValue(std::get<int>(*this)); +} + +ProgressParams::ProgressType ProgressParams::value() const +{ + QJsonObject paramsValue = JsonObject::value(valueKey).toObject(); + if (paramsValue[kindKey] == "begin") + return ProgressParams::ProgressType(WorkDoneProgressBegin(paramsValue)); + if (paramsValue[kindKey] == "report") + return ProgressParams::ProgressType(WorkDoneProgressReport(paramsValue)); + return ProgressParams::ProgressType(WorkDoneProgressEnd(paramsValue)); +} + +void ProgressParams::setValue(const ProgressParams::ProgressType &value) +{ + insertVariant<WorkDoneProgressBegin, WorkDoneProgressReport, WorkDoneProgressEnd>(valueKey, value); +} + +ProgressNotification::ProgressNotification(const ProgressParams ¶ms) + : Notification(methodName, params) +{ + +} + +WorkDoneProgressCreateRequest::WorkDoneProgressCreateRequest(const WorkDoneProgressCreateParams ¶ms) + : Request(methodName, params) +{ + +} + +} // namespace lsp |