aboutsummaryrefslogtreecommitdiff
path: root/src/webview.cpp
diff options
context:
space:
mode:
authorLibravatar keshavbhatt <keshavnrj@gmail.com>2021-04-09 10:23:26 +0530
committerLibravatar keshavbhatt <keshavnrj@gmail.com>2021-04-09 10:23:26 +0530
commit2b3f192127466b044e87a39020ef57d734793f38 (patch)
tree02ab3529d0a2c481856e73dcd8fc29472cd559e8 /src/webview.cpp
parentbe673a4a1e539307517439d0a8696afa681d8cb6 (diff)
downloadwhatsie-2b3f192127466b044e87a39020ef57d734793f38.tar.gz
whatsie-2b3f192127466b044e87a39020ef57d734793f38.zip
added webview class
new dictionaries deployment strategy
Diffstat (limited to 'src/webview.cpp')
-rw-r--r--src/webview.cpp51
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());
+}