blob: 92537d2e55622781f2d2e2826f9885ca7842ce67 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <projectexplorer/buildstep.h>
#include <solutions/tasking/tasktree.h>
#include <QJsonObject>
#include <utility>
namespace QbsProjectManager::Internal {
class QbsBuildSystem;
class QbsRequestObject;
class QbsSession;
using ParseData = std::pair<QPointer<QbsBuildSystem>, QVariantMap>;
class QbsRequest final : public QObject
{
Q_OBJECT
public:
~QbsRequest() override;
void setSession(QbsSession *session) { m_session = session; }
void setRequestData(const QJsonObject &requestData) { m_requestData = requestData; }
void setParseData(const ParseData &parseData) { m_parseData = parseData; }
void start();
signals:
void done(Tasking::DoneResult result);
void progressChanged(int progress, const QString &info); // progress in %
void outputAdded(const QString &output, ProjectExplorer::BuildStep::OutputFormat format);
void taskAdded(const ProjectExplorer::Task &task);
private:
QbsSession *m_session = nullptr; // TODO: Should we keep a QPointer?
std::optional<QJsonObject> m_requestData;
ParseData m_parseData;
QbsRequestObject *m_requestObject = nullptr;
};
using QbsRequestTask = Tasking::SimpleCustomTask<QbsRequest>;
} // namespace QbsProjectManager::Internal
|