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

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 "texttranslator_export.h"
0010 #include <QObject>
0011 #include <TextTranslator/TranslatorUtil>
0012 #include <memory>
0013 namespace TextTranslator
0014 {
0015 class TranslatorEngineLoaderPrivate;
0016 class TranslatorEngineClient;
0017 class TEXTTRANSLATOR_EXPORT TranslatorEngineLoader : public QObject
0018 {
0019     Q_OBJECT
0020 public:
0021     static TranslatorEngineLoader *self();
0022 
0023     explicit TranslatorEngineLoader(QObject *parent = nullptr);
0024     ~TranslatorEngineLoader() override;
0025 
0026     Q_REQUIRED_RESULT TextTranslator::TranslatorEngineClient *createTranslatorClient(const QString &clientName);
0027 
0028     // engine name, i18n
0029     Q_REQUIRED_RESULT QMap<QString, QString> translatorEngineInfos() const;
0030 
0031     Q_REQUIRED_RESULT QString currentPluginName(const QString &key) const;
0032 
0033     Q_REQUIRED_RESULT QMap<TextTranslator::TranslatorUtil::Language, QString> supportedFromLanguages(const QString &clientName) const;
0034     Q_REQUIRED_RESULT QMap<TextTranslator::TranslatorUtil::Language, QString> supportedToLanguages(const QString &clientName) const;
0035 
0036     Q_REQUIRED_RESULT bool hasConfigurationDialog(const QString &clientName) const;
0037 
0038     Q_REQUIRED_RESULT QString fallbackFirstEngine() const;
0039 
0040     Q_REQUIRED_RESULT bool showConfigureDialog(const QString &clientName, QWidget *parentWidget);
0041 
0042 Q_SIGNALS:
0043     void loadingTranslatorFailed();
0044 
0045 private:
0046     TEXTTRANSLATOR_NO_EXPORT void loadPlugins();
0047     TEXTTRANSLATOR_NO_EXPORT void loadPlugin(const QString &pluginPath);
0048     std::unique_ptr<TranslatorEngineLoaderPrivate> const d;
0049 };
0050 }