File indexing completed on 2024-05-05 04:40:14

0001 /*
0002     SPDX-FileCopyrightText: 2020 David Redondo <kde@david-redondo.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef KDEVPLATFORM_PLUGIN_PROBLEMINLINENOTEPROVIDER_H
0008 #define KDEVPLATFORM_PLUGIN_PROBLEMINLINENOTEPROVIDER_H
0009 
0010 #include <interfaces/iproblem.h>
0011 #include <interfaces/icompletionsettings.h>
0012 
0013 #include <KTextEditor/InlineNoteProvider>
0014 
0015 #include <QHash>
0016 #include <QPointer>
0017 #include <QVector>
0018 
0019 namespace KTextEditor {
0020 class Document;
0021 }
0022 
0023 class ProblemInlineNoteProvider : public KTextEditor::InlineNoteProvider
0024 {
0025     Q_OBJECT
0026 public:
0027     explicit ProblemInlineNoteProvider(KTextEditor::Document* document);
0028     ~ProblemInlineNoteProvider();
0029 
0030     void setProblems(const QVector<KDevelop::IProblem::Ptr>& problems);
0031 
0032     QVector<int> inlineNotes(int line) const override;
0033     QSize inlineNoteSize(const KTextEditor::InlineNote& note) const override;
0034     void paintInlineNote(const KTextEditor::InlineNote& note, QPainter& painter) const override;
0035 private:
0036     void completionSettingsChanged();
0037 
0038     QPointer<KTextEditor::Document> m_document;
0039     QVector<KDevelop::IProblem::Ptr> m_problems;
0040     QHash<int, KDevelop::IProblem::Ptr> m_problemForLine;
0041     KDevelop::ICompletionSettings::ProblemInlineNotesLevel m_currentLevel;
0042 };
0043 #endif