1 | /* |
2 | SPDX-FileCopyrightText: 2015 Michal Humpula <michal.humpula@hudrydum.cz> |
3 | |
4 | SPDX-License-Identifier: LGPL-2.0-or-later |
5 | */ |
6 | |
7 | #ifndef WORDCOUNTER_H |
8 | #define WORDCOUNTER_H |
9 | |
10 | #include <QObject> |
11 | #include <QString> |
12 | #include <QTimer> |
13 | #include <vector> |
14 | |
15 | namespace KTextEditor |
16 | { |
17 | class Document; |
18 | class View; |
19 | class ViewPrivate; |
20 | class Range; |
21 | } |
22 | |
23 | class WordCounter : public QObject |
24 | { |
25 | Q_OBJECT |
26 | |
27 | public: |
28 | explicit WordCounter(KTextEditor::ViewPrivate *view); |
29 | |
30 | Q_SIGNALS: |
31 | void changed(int wordsInDocument, int wordsInSelection, int charsInDocument, int charsInSelection); |
32 | |
33 | private Q_SLOTS: |
34 | void textInserted(KTextEditor::Document *document, KTextEditor::Range range); |
35 | void textRemoved(KTextEditor::Document *document, KTextEditor::Range range, const QString &oldText); |
36 | void recalculate(KTextEditor::Document *document); |
37 | void selectionChanged(KTextEditor::View *view); |
38 | void recalculateLines(); |
39 | |
40 | private: |
41 | std::vector<int> m_countByLine; |
42 | int m_wordsInDocument, m_wordsInSelection; |
43 | int m_charsInDocument, m_charsInSelection; |
44 | QTimer m_timer; |
45 | int m_startRecalculationFrom; |
46 | KTextEditor::Document *m_document; |
47 | }; |
48 | |
49 | #endif |
50 | |