File indexing completed on 2024-04-28 05:49:01

0001 /*
0002     SPDX-FileCopyrightText: 2019 Mark Nauwelaerts <mark.nauwelaerts@gmail.com>
0003     SPDX-FileCopyrightText: 2019 Christoph Cullmann <cullmann@kde.org>
0004 
0005     SPDX-License-Identifier: MIT
0006 */
0007 
0008 #pragma once
0009 
0010 #include "lspclientplugin.h"
0011 #include "lspclientservermanager.h"
0012 
0013 #include <QObject>
0014 
0015 class LSPClientSymbolView
0016 {
0017 public:
0018     // only needs a factory; no other public interface
0019     static LSPClientSymbolView *new_(LSPClientPlugin *plugin, KTextEditor::MainWindow *mainWin, std::shared_ptr<LSPClientServerManager> manager);
0020 
0021     virtual ~LSPClientSymbolView();
0022 
0023     virtual class QAbstractItemModel *documentSymbolsModel() = 0;
0024 };
0025 
0026 class LSPClientViewTracker : public QObject
0027 {
0028     Q_OBJECT
0029 public:
0030     // factory method; private implementation by interface
0031     static LSPClientViewTracker *new_(LSPClientPlugin *plugin, KTextEditor::MainWindow *mainWin, int change_ms, int motion_ms);
0032 
0033     enum State {
0034         ViewChanged,
0035         TextChanged,
0036         LineChanged,
0037     };
0038 
0039 Q_SIGNALS:
0040     void newState(KTextEditor::View *, State);
0041 };