// Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef CODEHELPER_H #define CODEHELPER_H #include #include #include #include "codecompletionmodel.h" class EffectManager; class CodeHelper : public QObject { Q_OBJECT Q_PROPERTY(CodeCompletionModel *codeCompletionModel READ codeCompletionModel NOTIFY codeCompletionModelChanged) Q_PROPERTY(bool codeCompletionVisible READ codeCompletionVisible WRITE setCodeCompletionVisible NOTIFY codeCompletionVisibleChanged) public: explicit CodeHelper(QObject *parent = nullptr); CodeCompletionModel *codeCompletionModel() const; bool codeCompletionVisible() const; public Q_SLOTS: bool processKey(QQuickTextEdit *textEdit, int keyCode, int modifiers); QString autoIndentGLSLCode(const QString &code); QString autoIndentGLSLNextLine(const QString &codeLine, bool multilineComment); QString getCurrentWord(QQuickTextEdit *textEdit); void removeCurrentWord(QQuickTextEdit *textEdit); void updateCodeCompletion(QQuickTextEdit *textEdit, bool force = false); void setCodeCompletionVisible(bool visible); void applyCodeCompletion(QQuickTextEdit *textEdit); signals: void codeCompletionModelChanged(); void codeCompletionVisibleChanged(); private: friend class EffectManager; void showCodeCompletion(); EffectManager *m_effectManager = nullptr; CodeCompletionModel *m_codeCompletionModel = nullptr; QQuickTextEdit *m_textEdit = nullptr; bool m_codeCompletionVisible = false; QTimer m_codeCompletionTimer; QList m_reservedArgumentNames; QList m_reservedTagNames; QList m_reservedFunctionNames; }; #endif // CODEHELPER_H