Marble

MarbleWebView.cpp
1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2012 Illya Kovalevskyy <[email protected]>
4 //
5 
6 #include "MarbleWebView.h"
7 #include <QApplication>
8 #include <QMenu>
9 #include <QContextMenuEvent>
10 #include <QKeyEvent>
11 #include <QClipboard>
12 
13 MarbleWebView::MarbleWebView(QWidget *parent) :
14  QWebEngineView(parent),
15  m_contextMenu(new QMenu(this)),
16  m_copyAction(new QAction(this))
17 {
18  m_copyAction->setText(tr("Copy"));
19  m_copyAction->setIcon(QIcon(QStringLiteral(":/icons/edit-copy.png")));
20  m_copyAction->setIconVisibleInMenu(true);
21  m_copyAction->setToolTip(tr("Copy selected content"));
22  connect(m_copyAction, SIGNAL(triggered()),
23  this, SLOT(copySelectedText()));
24  m_contextMenu->addAction(m_copyAction);
25  setContextMenuPolicy(Qt::DefaultContextMenu);
26 }
27 
28 void MarbleWebView::contextMenuEvent(QContextMenuEvent *event)
29 {
30  m_copyAction->setEnabled(!selectedText().isEmpty());
31  m_contextMenu->exec(event->globalPos());
32 }
33 
34 void MarbleWebView::copySelectedText()
35 {
36  const QString text = selectedText();
37  if (!text.isEmpty()) {
38  QClipboard *clipboard = QApplication::clipboard();
39  clipboard->setText(text);
40  }
41 }
42 
43 void MarbleWebView::keyPressEvent(QKeyEvent *event)
44 {
45  if(event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_C) {
46  copySelectedText();
47  return;
48  }
49 
50  QWebEngineView::keyPressEvent(event);
51 }
52 
53 #include "moc_MarbleWebView.cpp"
DefaultContextMenu
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QClipboard * clipboard()
bool isEmpty() const const
AKONADI_CALENDAR_EXPORT KCalendarCore::Event::Ptr event(const Akonadi::Item &item)
void setText(const QString &text, QClipboard::Mode mode)
ControlModifier
QString tr(const char *sourceText, const char *disambiguation, int n)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Sep 25 2023 03:50:19 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.