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

0001 /*
0002     SPDX-FileCopyrightText: 2017 Anton Anikin <anton.anikin@htower.ru>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <shell/problemmodel.h>
0010 
0011 namespace KDevelop
0012 {
0013     class IProject;
0014 }
0015 
0016 namespace cppcheck
0017 {
0018 
0019 class Plugin;
0020 
0021 class ProblemModel : public KDevelop::ProblemModel
0022 {
0023     Q_OBJECT
0024 public:
0025     explicit ProblemModel(Plugin* plugin);
0026     ~ProblemModel() override;
0027 
0028     KDevelop::IProject* project() const;
0029 
0030     void addProblems(const QVector<KDevelop::IProblem::Ptr>& problems);
0031 
0032     void setProblems();
0033 
0034     void reset();
0035     void reset(KDevelop::IProject* project, const QString& path);
0036 
0037     void show();
0038 
0039     void forceFullUpdate() override;
0040 
0041 private:
0042     void fixProblemFinalLocation(KDevelop::IProblem::Ptr problem);
0043     bool problemExists(KDevelop::IProblem::Ptr newProblem);
0044     void setMessage(const QString& message);
0045 
0046     using KDevelop::ProblemModel::setProblems;
0047 
0048     Plugin* m_plugin;
0049 
0050     KDevelop::IProject* m_project;
0051 
0052     QString m_path;
0053     KDevelop::DocumentRange m_pathLocation;
0054 
0055     QVector<KDevelop::IProblem::Ptr> m_problems;
0056 };
0057 
0058 }