// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0 WITH Qt-GPL-exception-1.0 #include "progresssupport.h" #include #include namespace LanguageServerProtocol { ProgressToken::ProgressToken(const QJsonValue &value) { if (!QTC_GUARD(value.isDouble() || value.isString())) emplace(QUuid::createUuid().toString()); else if (value.isDouble()) emplace(value.toInt()); else emplace(value.toString()); } ProgressToken::operator QJsonValue() const { if (std::holds_alternative(*this)) return QJsonValue(std::get(*this)); return QJsonValue(std::get(*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(valueKey, value); } ProgressNotification::ProgressNotification(const ProgressParams ¶ms) : Notification(methodName, params) { } WorkDoneProgressCreateRequest::WorkDoneProgressCreateRequest(const WorkDoneProgressCreateParams ¶ms) : Request(methodName, params) { } } // namespace LanguageServerProtocol