File indexing completed on 2024-04-21 04:58:02
0001 /* 0002 SPDX-FileCopyrightText: 2002 George Russell <george.russell@clara.net> 0003 SPDX-FileCopyrightText: 2003-2004 Olaf Schmidt <ojschmidt@kde.org> 0004 SPDX-FileCopyrightText: 2015 Jeremy Whiting <jpwhiting@kde.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 // Own 0010 #include "khtmltts.h" 0011 #include "textextension.h" 0012 0013 // Qt 0014 #include <QAction> 0015 #include <QIcon> 0016 #include <QTextToSpeech> 0017 0018 // KDE 0019 #include <KActionCollection> 0020 #include <KLocalizedString> 0021 #include <KParts/ReadOnlyPart> 0022 #include <kpluginfactory.h> 0023 0024 KHTMLPluginTTS::KHTMLPluginTTS(QObject *parent, const QVariantList &) 0025 : KonqParts::Plugin(parent) 0026 { 0027 TextExtension *textExt = TextExtension::childObject(parent); 0028 if (textExt && qobject_cast<KParts::ReadOnlyPart *>(parent)) { 0029 m_tts = std::unique_ptr<QTextToSpeech>(new QTextToSpeech); 0030 0031 QAction *action = actionCollection()->addAction(QStringLiteral("tools_tts")); 0032 action->setIcon(QIcon::fromTheme(QStringLiteral("text-speak"))); 0033 action->setText(i18n("&Speak Text")); 0034 connect(action, SIGNAL(triggered(bool)), SLOT(slotReadOut())); 0035 } 0036 } 0037 0038 KHTMLPluginTTS::~KHTMLPluginTTS() 0039 { 0040 } 0041 0042 void KHTMLPluginTTS::slotReadOut() 0043 { 0044 TextExtension *textExt = TextExtension::childObject(parent()); 0045 QString query; 0046 const TextExtension::Format format = TextExtension::PlainText; 0047 if (textExt->hasSelection()) { 0048 query = textExt->selectedText(format); 0049 } else { 0050 query = textExt->completeText(format); 0051 } 0052 0053 m_tts->say(query); 0054 } 0055 0056 K_PLUGIN_CLASS_WITH_JSON(KHTMLPluginTTS, "khtmltts.json") 0057 0058 #include "khtmltts.moc"