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

0001 /*
0002   SPDX-FileCopyrightText: 2022-2023 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QObject>
0010 
0011 #include "texttranslator_export.h"
0012 #include <QMap>
0013 #include <TextTranslator/TranslatorUtil>
0014 namespace TextTranslator
0015 {
0016 class TranslatorEnginePlugin;
0017 class TEXTTRANSLATOR_EXPORT TranslatorEngineClient : public QObject
0018 {
0019     Q_OBJECT
0020 public:
0021     enum EngineType {
0022         Locale,
0023         Network,
0024     };
0025     explicit TranslatorEngineClient(QObject *parent = nullptr);
0026     ~TranslatorEngineClient() override;
0027 
0028     /**
0029      * @returns the name of the implementing class.
0030      */
0031     virtual QString name() const = 0;
0032 
0033     virtual QString translatedName() const = 0;
0034 
0035     virtual TranslatorEnginePlugin *createTranslator() = 0;
0036 
0037     Q_REQUIRED_RESULT virtual QMap<TranslatorUtil::Language, QString> supportedFromLanguages() = 0;
0038     Q_REQUIRED_RESULT virtual QMap<TranslatorUtil::Language, QString> supportedToLanguages() = 0;
0039     virtual void updateListLanguages();
0040 
0041     Q_REQUIRED_RESULT virtual bool hasConfigurationDialog() const;
0042 
0043     virtual bool showConfigureDialog(QWidget *parentWidget);
0044     virtual void generateToListFromCurrentToLanguage(const QString &languageCode);
0045 
0046     Q_REQUIRED_RESULT virtual bool hasInvertSupport() const;
0047 
0048     Q_REQUIRED_RESULT virtual TextTranslator::TranslatorEngineClient::EngineType engineType() const = 0;
0049 
0050 Q_SIGNALS:
0051     void configureChanged();
0052 
0053 protected:
0054     Q_REQUIRED_RESULT QMap<TextTranslator::TranslatorUtil::Language, QString> fillLanguages();
0055     Q_REQUIRED_RESULT virtual bool isSupported(TextTranslator::TranslatorUtil::Language lang) const = 0;
0056     QMap<TranslatorUtil::Language, QString> mFromLanguages;
0057 };
0058 }
0059 Q_DECLARE_INTERFACE(TextTranslator::TranslatorEngineClient, "org.kde.translator.Client")