File indexing completed on 2024-05-19 05:51:40

0001 /* This file is part of the KDE libraries
0002    SPDX-FileCopyrightText: 2001 Christoph Cullmann <cullmann@kde.org>
0003    SPDX-FileCopyrightText: 2005 Dominik Haumann (dhaumann@kde.org) (documentation)
0004 
0005    SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include <KTextEditor/Document>
0011 #include <QPixmap>
0012 #include <qicon.h>
0013 
0014 class DummyDocument : public KTextEditor::Document
0015 {
0016     Q_OBJECT
0017 
0018 public:
0019     explicit DummyDocument(const QString &url = QString())
0020         : KTextEditor::Document(nullptr, KPluginMetaData(), nullptr)
0021         , m_name(QStringLiteral("foo"))
0022         , m_encoding()
0023         , m_views()
0024     {
0025         setUrl(url);
0026         m_name = url.section(QLatin1Char('/'), -1); // some nice default to mimic the KateDocument
0027     }
0028     explicit DummyDocument(const char *url)
0029         : DummyDocument(QString::fromLatin1(url))
0030     {
0031     }
0032 
0033     ~DummyDocument() override
0034     {
0035     }
0036     KTextEditor::View *createView(QWidget *, KTextEditor::MainWindow * = nullptr) override
0037     {
0038         return nullptr;
0039     }
0040     virtual KTextEditor::View *activeView() const
0041     {
0042         return nullptr;
0043     }
0044     QList<KTextEditor::View *> views() const override
0045     {
0046         return m_views;
0047     }
0048 
0049     QString documentName() const override
0050     {
0051         return m_name;
0052     }
0053 
0054     QString mimeType() override
0055     {
0056         return QString();
0057     }
0058     QByteArray checksum() const override
0059     {
0060         return QByteArray();
0061     }
0062     bool setEncoding(const QString &) override
0063     {
0064         return false;
0065     }
0066     QString encoding() const override
0067     {
0068         return m_encoding;
0069     }
0070 
0071     bool documentReload() override
0072     {
0073         return true;
0074     }
0075     bool documentSave() override
0076     {
0077         return true;
0078     }
0079     bool documentSaveAs() override
0080     {
0081         return true;
0082     }
0083 
0084     bool isEditingTransactionRunning() const override
0085     {
0086         return false;
0087     }
0088     QString text() const override
0089     {
0090         return QString();
0091     }
0092     QString text(KTextEditor::Range, bool = false) const override
0093     {
0094         return QString();
0095     }
0096     QChar characterAt(KTextEditor::Cursor) const override
0097     {
0098         return QChar();
0099     }
0100     QString wordAt(KTextEditor::Cursor) const override
0101     {
0102         return QString();
0103     }
0104     KTextEditor::Range wordRangeAt(KTextEditor::Cursor) const override
0105     {
0106         return KTextEditor::Range();
0107     }
0108     bool isValidTextPosition(KTextEditor::Cursor) const override
0109     {
0110         return true;
0111     }
0112     QStringList textLines(KTextEditor::Range, bool = false) const override
0113     {
0114         return QStringList();
0115     }
0116     QString line(int) const override
0117     {
0118         return QString();
0119     }
0120     int lines() const override
0121     {
0122         return 0;
0123     }
0124     KTextEditor::Cursor documentEnd() const override
0125     {
0126         return KTextEditor::Cursor();
0127     }
0128     qsizetype totalCharacters() const override
0129     {
0130         return 0;
0131     }
0132     int lineLength(int) const override
0133     {
0134         return 0;
0135     }
0136 
0137     bool setText(const QString &) override
0138     {
0139         return false;
0140     }
0141     bool setText(const QStringList &) override
0142     {
0143         return false;
0144     }
0145     bool clear() override
0146     {
0147         return true;
0148     }
0149     bool insertText(KTextEditor::Cursor, const QString &, bool = false) override
0150     {
0151         return false;
0152     }
0153     bool insertText(KTextEditor::Cursor, const QStringList &, bool = false) override
0154     {
0155         return false;
0156     }
0157     bool removeText(KTextEditor::Range, bool = false) override
0158     {
0159         return false;
0160     }
0161     bool insertLine(int, const QString &) override
0162     {
0163         return false;
0164     }
0165     bool insertLines(int, const QStringList &) override
0166     {
0167         return false;
0168     }
0169     bool removeLine(int) override
0170     {
0171         return false;
0172     }
0173     KSyntaxHighlighting::Theme::TextStyle defaultStyleAt(KTextEditor::Cursor) const override
0174     {
0175         return KSyntaxHighlighting::Theme::TextStyle::Normal;
0176     }
0177     QString mode() const override
0178     {
0179         return QString();
0180     }
0181     QString highlightingMode() const override
0182     {
0183         return QString();
0184     }
0185     QStringList modes() const override
0186     {
0187         return QStringList();
0188     }
0189     QStringList highlightingModes() const override
0190     {
0191         return QStringList();
0192     }
0193     bool setMode(const QString &) override
0194     {
0195         return false;
0196     }
0197     bool setHighlightingMode(const QString &) override
0198     {
0199         return false;
0200     }
0201     QString highlightingModeSection(int) const override
0202     {
0203         return QString();
0204     }
0205     QString modeSection(int) const override
0206     {
0207         return QString();
0208     }
0209     bool print() override
0210     {
0211         return false;
0212     }
0213     void printPreview() override
0214     {
0215     }
0216     QStringList embeddedHighlightingModes() const override
0217     {
0218         return QStringList();
0219     }
0220     QString highlightingModeAt(KTextEditor::Cursor) override
0221     {
0222         return QString();
0223     }
0224     bool isLineModified(int) const override
0225     {
0226         return false;
0227     }
0228     bool isLineSaved(int) const override
0229     {
0230         return false;
0231     }
0232     bool isLineTouched(int) const override
0233     {
0234         return false;
0235     }
0236 
0237     // KParts::ReadWritePart
0238     bool saveFile() override
0239     {
0240         return false;
0241     }
0242 
0243     KTextEditor::MovingCursor *newMovingCursor(KTextEditor::Cursor, KTextEditor::MovingCursor::InsertBehavior) override
0244     {
0245         return nullptr;
0246     }
0247     KTextEditor::MovingRange *newMovingRange(KTextEditor::Range, KTextEditor::MovingRange::InsertBehaviors, KTextEditor::MovingRange::EmptyBehavior) override
0248     {
0249         return nullptr;
0250     }
0251     qint64 revision() const override
0252     {
0253         return 0;
0254     };
0255     qint64 lastSavedRevision() const override
0256     {
0257         return 0;
0258     };
0259     void lockRevision(qint64) override
0260     {
0261     }
0262     void unlockRevision(qint64) override
0263     {
0264     }
0265     void transformCursor(KTextEditor::Cursor &, KTextEditor::MovingCursor::InsertBehavior, qint64, qint64 = -1) override
0266     {
0267     }
0268     void transformCursor(int &, int &, KTextEditor::MovingCursor::InsertBehavior, qint64, qint64 = -1) override
0269     {
0270     }
0271     void transformRange(KTextEditor::Range &, KTextEditor::MovingRange::InsertBehaviors, KTextEditor::MovingRange::EmptyBehavior, qint64, qint64 = -1) override
0272     {
0273     }
0274     QStringList configKeys() const override
0275     {
0276         return {};
0277     }
0278     QVariant configValue(const QString &) override
0279     {
0280         return {};
0281     }
0282     void setConfigValue(const QString &, const QVariant &) override
0283     {
0284     }
0285     void setModifiedOnDisk(ModifiedOnDiskReason) override
0286     {
0287     }
0288     void setModifiedOnDiskWarning(bool) override
0289     {
0290     }
0291     uint mark(int) override
0292     {
0293         return 0;
0294     }
0295     void setMark(int, uint) override
0296     {
0297     }
0298     void clearMark(int) override
0299     {
0300     }
0301     void addMark(int, uint) override
0302     {
0303     }
0304     void removeMark(int, uint) override
0305     {
0306     }
0307     const QHash<int, KTextEditor::Mark *> &marks() override
0308     {
0309         static const QHash<int, KTextEditor::Mark *> s;
0310         return s;
0311     }
0312     void clearMarks() override
0313     {
0314     }
0315     void setMarkDescription(MarkTypes, const QString &) override
0316     {
0317     }
0318     QString markDescription(MarkTypes) const override
0319     {
0320         return {};
0321     }
0322     void setEditableMarks(uint) override
0323     {
0324     }
0325     uint editableMarks() const override
0326     {
0327         return 0;
0328     }
0329     void setMarkIcon(MarkTypes, const QIcon &) override
0330     {
0331     }
0332     QIcon markIcon(MarkTypes) const override
0333     {
0334         return {};
0335     }
0336     void setAnnotationModel(KTextEditor::AnnotationModel *) override
0337     {
0338     }
0339     KTextEditor::AnnotationModel *annotationModel() const override
0340     {
0341         return nullptr;
0342     }
0343 
0344 public:
0345     void setUrl(const QString &url)
0346     {
0347         KParts::ReadOnlyPart::setUrl(QUrl(url));
0348     }
0349     void setName(const QString &name)
0350     {
0351         m_name = name;
0352     }
0353 
0354     void readSessionConfig(const KConfigGroup &, const QSet<QString> & = QSet<QString>()) override
0355     {
0356     }
0357     void writeSessionConfig(KConfigGroup &, const QSet<QString> & = QSet<QString>()) override
0358     {
0359     }
0360 
0361     bool postMessage(KTextEditor::Message *) override
0362     {
0363         return false;
0364     }
0365 
0366     bool isDataRecoveryAvailable() const override
0367     {
0368         return false;
0369     }
0370     void recoverData() override
0371     {
0372     }
0373     void discardDataRecovery() override
0374     {
0375     }
0376 
0377     virtual qsizetype cursorToOffset(KTextEditor::Cursor) const override
0378     {
0379         return 0;
0380     }
0381     virtual KTextEditor::Cursor offsetToCursor(qsizetype) const override
0382     {
0383         return {};
0384     }
0385 
0386 private:
0387     QString m_name, m_encoding;
0388     QList<KTextEditor::View *> m_views;
0389 };