File indexing completed on 2024-05-12 16:16:03

0001 /*
0002    SPDX-FileCopyrightText: 2019-2023 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "textgrammarcheckprivate_export.h"
0010 #include <QObject>
0011 class QNetworkRequest;
0012 class QNetworkReply;
0013 class QNetworkAccessManager;
0014 namespace TextGrammarCheck
0015 {
0016 class TEXTGRAMMARCHECK_TESTS_EXPORT LanguageToolResultJob : public QObject
0017 {
0018     Q_OBJECT
0019 public:
0020     explicit LanguageToolResultJob(QObject *parent = nullptr);
0021     ~LanguageToolResultJob() override;
0022     Q_REQUIRED_RESULT bool canStart() const;
0023     void start();
0024     Q_REQUIRED_RESULT QStringList arguments() const;
0025     void setArguments(const QStringList &arguments);
0026 
0027     QNetworkAccessManager *networkAccessManager() const;
0028     void setNetworkAccessManager(QNetworkAccessManager *networkAccessManager);
0029 
0030     Q_REQUIRED_RESULT QString text() const;
0031     void setText(const QString &text);
0032 
0033     Q_REQUIRED_RESULT QString url() const;
0034     void setUrl(const QString &url);
0035 
0036     Q_REQUIRED_RESULT QString language() const;
0037     void setLanguage(const QString &language);
0038 
0039 Q_SIGNALS:
0040     void finished(const QString &result);
0041     void error(const QString &errorStr);
0042 
0043 private:
0044     Q_DISABLE_COPY(LanguageToolResultJob)
0045     enum class JobError {
0046         NotError,
0047         EmptyText,
0048         UrlNotDefined,
0049         NetworkManagerNotDefined,
0050         LanguageNotDefined,
0051     };
0052 
0053     Q_REQUIRED_RESULT LanguageToolResultJob::JobError canStartError() const;
0054     void slotCheckGrammarFinished();
0055     void addRequestAttribute(QNetworkRequest &request) const;
0056     void slotFinish(QNetworkReply *reply);
0057     QStringList mArguments;
0058     QString mText;
0059     QString mUrl;
0060     QString mLanguage;
0061     QNetworkAccessManager *mNetworkAccessManager = nullptr;
0062 };
0063 }