KTextAddons

textautogeneratetextconfigurecombowidget.cpp
1/*
2 SPDX-FileCopyrightText: 2025 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#include "textautogeneratetextconfigurecombowidget.h"
8#include "core/textautogenerateengineloader.h"
9#include "core/textautogenerateengineutil.h"
10#include <KConfigGroup>
11#include <KSharedConfig>
12#include <QComboBox>
13#include <QHBoxLayout>
14#include <QToolButton>
15
16using namespace TextAutogenerateText;
17TextAutogenerateTextConfigureComboWidget::TextAutogenerateTextConfigureComboWidget(QWidget *parent)
18 : QWidget{parent}
19 , mEngineComboBox(new QComboBox(this))
20 , mConfigureEngine(new QToolButton(this))
21{
22 auto mainLayout = new QHBoxLayout(this);
23 mainLayout->setObjectName(QStringLiteral("mainLayout"));
24 mainLayout->setContentsMargins(QMargins{});
25 mainLayout->setSpacing(0);
26
27 mEngineComboBox->setObjectName(QStringLiteral("mEngineComboBox"));
28 mainLayout->addWidget(mEngineComboBox);
29
30 mConfigureEngine->setObjectName(QStringLiteral("mConfigureEngine"));
31 mainLayout->addWidget(mConfigureEngine);
32 mConfigureEngine->setEnabled(false); // Disable by default
33 mConfigureEngine->setIcon(QIcon::fromTheme(QStringLiteral("settings-configure")));
34 connect(mConfigureEngine, &QToolButton::clicked, this, &TextAutogenerateTextConfigureComboWidget::slotConfigureEngine);
35 connect(mEngineComboBox, &QComboBox::currentIndexChanged, this, &TextAutogenerateTextConfigureComboWidget::slotEngineChanged);
36
37 fillEngine();
38}
39
40TextAutogenerateTextConfigureComboWidget::~TextAutogenerateTextConfigureComboWidget() = default;
41
42void TextAutogenerateTextConfigureComboWidget::slotConfigureEngine()
43{
44 const QString engine = mEngineComboBox->currentData().toString();
45 if (TextAutogenerateText::TextAutogenerateEngineLoader::self()->hasConfigurationDialog(engine)) {
46 if (TextAutogenerateText::TextAutogenerateEngineLoader::self()->showConfigureDialog(engine, this)) {
47 Q_EMIT configureChanged(engine);
48 }
49 }
50}
51
52void TextAutogenerateTextConfigureComboWidget::fillEngine()
53{
54 mEngineComboBox->clear();
55 TextAutogenerateText::TextAutogenerateEngineLoader::self()->loadPlugins();
56 const QMap<QString, QString> map = TextAutogenerateText::TextAutogenerateEngineLoader::self()->textAutoGenerateTextEngineInfos();
57 QMapIterator<QString, QString> iMap(map);
58 while (iMap.hasNext()) {
59 iMap.next();
60 mEngineComboBox->addItem(iMap.value(), iMap.key());
61 }
62}
63
64void TextAutogenerateTextConfigureComboWidget::slotEngineChanged(int index)
65{
66 const QString engine = mEngineComboBox->itemData(index).toString();
67 mConfigureEngine->setEnabled(TextAutogenerateText::TextAutogenerateEngineLoader::self()->hasConfigurationDialog(engine));
68 Q_EMIT engineChanged(engine);
69}
70
71void TextAutogenerateTextConfigureComboWidget::load()
72{
73 KConfigGroup groupTranslate(KSharedConfig::openConfig(), TextAutogenerateEngineUtil::groupAutoGenerateTextName());
74 const QString engine = groupTranslate.readEntry(TextAutogenerateEngineUtil::engineTranslateName(), TextAutogenerateEngineUtil::defaultEngineName());
75 const int index = mEngineComboBox->findData(engine);
76 if (index != -1) {
77 mEngineComboBox->setCurrentIndex(index);
78 }
79}
80
81void TextAutogenerateTextConfigureComboWidget::save()
82{
83 const QString engine = mEngineComboBox->currentData().toString();
84 KConfigGroup groupTranslate(KSharedConfig::openConfig(), TextAutogenerateEngineUtil::groupAutoGenerateTextName());
85 groupTranslate.writeEntry(TextAutogenerateEngineUtil::engineTranslateName(), engine);
87}
88
89#include "moc_textautogeneratetextconfigurecombowidget.cpp"
static KSharedConfig::Ptr openConfig(const QString &fileName=QString(), OpenFlags mode=FullConfig, QStandardPaths::StandardLocation type=QStandardPaths::GenericConfigLocation)
void clicked(bool checked)
void currentIndexChanged(int index)
QIcon fromTheme(const QString &name)
Q_EMITQ_EMIT
QFuture< void > map(Iterator begin, Iterator end, MapFunctor &&function)
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri May 2 2025 12:06:03 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.