diff options
author | 2021-04-09 10:23:26 +0530 | |
---|---|---|
committer | 2021-04-09 10:23:26 +0530 | |
commit | 2b3f192127466b044e87a39020ef57d734793f38 (patch) | |
tree | 02ab3529d0a2c481856e73dcd8fc29472cd559e8 /src/webview.cpp | |
parent | be673a4a1e539307517439d0a8696afa681d8cb6 (diff) | |
download | whatsie-2b3f192127466b044e87a39020ef57d734793f38.tar.gz whatsie-2b3f192127466b044e87a39020ef57d734793f38.zip |
added webview class
new dictionaries deployment strategy
Diffstat (limited to 'src/webview.cpp')
-rw-r--r-- | src/webview.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/webview.cpp b/src/webview.cpp new file mode 100644 index 0000000..8e61f2e --- /dev/null +++ b/src/webview.cpp @@ -0,0 +1,51 @@ +#include "webview.h" + +#include <QContextMenuEvent> +#include <QMenu> +#include <QWebEngineProfile> +#include <QWebEngineContextMenuData> + +WebView::WebView(QWidget *parent, QStringList dictionaries) + : QWebEngineView(parent) +{ + m_dictionaries = dictionaries; +} + +void WebView::contextMenuEvent(QContextMenuEvent *event) +{ + const QWebEngineContextMenuData &data = page()->contextMenuData(); + Q_ASSERT(data.isValid()); + + if (!data.isContentEditable()) { + QWebEngineView::contextMenuEvent(event); + return; + } + + QWebEngineProfile *profile = page()->profile(); + const QStringList &languages = profile->spellCheckLanguages(); + QMenu *menu = page()->createStandardContextMenu(); + menu->addSeparator(); + + QAction *spellcheckAction = new QAction(tr("Check Spelling"), nullptr); + spellcheckAction->setCheckable(true); + spellcheckAction->setChecked(profile->isSpellCheckEnabled()); + connect(spellcheckAction, &QAction::toggled, this, [profile](bool toogled) { + profile->setSpellCheckEnabled(toogled); + }); + menu->addAction(spellcheckAction); + + if (profile->isSpellCheckEnabled()) { + QMenu *subMenu = menu->addMenu(tr("Select Language")); + for (const QString &dict : m_dictionaries) { + QAction *action = subMenu->addAction(dict); + action->setCheckable(true); + action->setChecked(languages.contains(dict)); + connect(action, &QAction::triggered, this, [profile, dict,this](){ + profile->setSpellCheckLanguages(QStringList()<<dict); + settings.setValue("sc_dict",dict); + }); + } + } + connect(menu, &QMenu::aboutToHide, menu, &QObject::deleteLater); + menu->popup(event->globalPos()); +} |