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
26 mEngineComboBox->setObjectName(QStringLiteral("mEngineComboBox"));
27 mainLayout->addWidget(mEngineComboBox);
28
29 mConfigureEngine->setObjectName(QStringLiteral("mConfigureEngine"));
30 mainLayout->addWidget(mConfigureEngine);
31 mConfigureEngine->setEnabled(false); // Disable by default
32 mConfigureEngine->setIcon(QIcon::fromTheme(QStringLiteral("settings-configure")));
33 connect(mConfigureEngine, &QToolButton::clicked, this, &TextAutogenerateTextConfigureComboWidget::slotConfigureEngine);
34 connect(mEngineComboBox, &QComboBox::currentIndexChanged, this, &TextAutogenerateTextConfigureComboWidget::slotEngineChanged);
35
36 fillEngine();
37}
38
39TextAutogenerateTextConfigureComboWidget::~TextAutogenerateTextConfigureComboWidget() = default;
40
41void TextAutogenerateTextConfigureComboWidget::slotConfigureEngine()
42{
43 const QString engine = mEngineComboBox->currentData().toString();
44 if (TextAutogenerateText::TextAutogenerateEngineLoader::self()->hasConfigurationDialog(engine)) {
45 if (TextAutogenerateText::TextAutogenerateEngineLoader::self()->showConfigureDialog(engine, this)) {
46 Q_EMIT configureChanged(engine);
47 }
48 }
49}
50
51void TextAutogenerateTextConfigureComboWidget::fillEngine()
52{
53 mEngineComboBox->clear();
54 TextAutogenerateText::TextAutogenerateEngineLoader::self()->loadPlugins();
55 const QMap<QString, QString> map = TextAutogenerateText::TextAutogenerateEngineLoader::self()->textAutoGenerateTextEngineInfos();
56 QMapIterator<QString, QString> iMap(map);
57 while (iMap.hasNext()) {
58 iMap.next();
59 mEngineComboBox->addItem(iMap.value(), iMap.key());
60 }
61}
62
63void TextAutogenerateTextConfigureComboWidget::slotEngineChanged(int index)
64{
65 const QString engine = mEngineComboBox->itemData(index).toString();
66 mConfigureEngine->setEnabled(TextAutogenerateText::TextAutogenerateEngineLoader::self()->hasConfigurationDialog(engine));
67 Q_EMIT engineChanged(engine);
68}
69
70void TextAutogenerateTextConfigureComboWidget::load()
71{
72 KConfigGroup groupTranslate(KSharedConfig::openConfig(), TextAutogenerateEngineUtil::groupAutoGenerateTextName());
73 const QString engine = groupTranslate.readEntry(TextAutogenerateEngineUtil::engineTranslateName(), TextAutogenerateEngineUtil::defaultEngineName());
74 const int index = mEngineComboBox->findData(engine);
75 if (index != -1) {
76 mEngineComboBox->setCurrentIndex(index);
77 }
78}
79
80void TextAutogenerateTextConfigureComboWidget::save()
81{
82 const QString engine = mEngineComboBox->currentData().toString();
83 KConfigGroup groupTranslate(KSharedConfig::openConfig(), TextAutogenerateEngineUtil::groupAutoGenerateTextName());
84 groupTranslate.writeEntry(TextAutogenerateEngineUtil::engineTranslateName(), engine);
86}
87
88#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 Apr 18 2025 12:00:52 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.