File indexing completed on 2024-05-05 04:39:26

0001 /*
0002     SPDX-FileCopyrightText: 2017 Aleix Pol Gonzalez <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef CMAKESERVERIMPORTJOB_H
0008 #define CMAKESERVERIMPORTJOB_H
0009 
0010 #include <QPointer>
0011 #include <KJob>
0012 #include "cmakeprojectdata.h"
0013 
0014 namespace KDevelop
0015 {
0016 class IProject;
0017 }
0018 
0019 class CMakeServerImportJob : public KJob
0020 {
0021     Q_OBJECT
0022 public:
0023     CMakeServerImportJob(KDevelop::IProject* project, const QSharedPointer<CMakeServer> &server, QObject* parent);
0024 
0025     enum Error { NoError, UnexpectedDisconnect, ErrorResponse };
0026 
0027     void start() override;
0028 
0029     KDevelop::IProject* project() const { return m_project; }
0030 
0031     CMakeProjectData projectData() const { return m_data; }
0032 
0033     static void processCodeModel(const QJsonObject &response, CMakeProjectData &data);
0034 
0035 private:
0036     void doStart();
0037     void processResponse(const QJsonObject &response);
0038 
0039     QSharedPointer<CMakeServer> m_server;
0040     KDevelop::IProject* m_project;
0041 
0042     CMakeProjectData m_data;
0043 };
0044 
0045 #endif // CMAKESERVERIMPORTJOB_H