aboutsummaryrefslogtreecommitdiffstats
path: root/src/virtualkeyboard/desktopinputselectioncontrol.h
diff options
context:
space:
mode:
authorJan Arve Sæther <jan-arve.saether@qt.io>2016-10-28 15:44:26 +0200
committerFrederik Gladhorn <frederik.gladhorn@qt.io>2016-10-28 16:17:22 +0000
commitf55b400bc919f0b410725463082807067441aae7 (patch)
treec0d53015379044b1a8bb8f207cb880db2bfb33a8 /src/virtualkeyboard/desktopinputselectioncontrol.h
parente8b7dcea885f5b5873ede6fb1a1da0a447c888bc (diff)
Add selection handles for the dedicated vkb
The handles are implemented using top level windows, which will allow them to be used for widgets and other input editors supporting the IM framework [ChangeLog] Added support for selection handles for the dedicated VKB. Change-Id: I5078689310f99c4ec752a0aad47a48c5a66aface Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/virtualkeyboard/desktopinputselectioncontrol.h')
-rw-r--r--src/virtualkeyboard/desktopinputselectioncontrol.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/virtualkeyboard/desktopinputselectioncontrol.h b/src/virtualkeyboard/desktopinputselectioncontrol.h
new file mode 100644
index 00000000..b138c937
--- /dev/null
+++ b/src/virtualkeyboard/desktopinputselectioncontrol.h
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DESKTOPINPUTSELECTIONCONTROL_H
+#define DESKTOPINPUTSELECTIONCONTROL_H
+
+#include <QtCore/qpointer.h>
+#include <QtCore/qobject.h>
+#include <QtGui/qimage.h>
+
+QT_BEGIN_NAMESPACE
+class QMouseEvent;
+QT_END_NAMESPACE
+
+namespace QtVirtualKeyboard {
+class InputContext;
+class InputSelectionHandle;
+
+class DesktopInputSelectionControl : public QObject
+{
+public:
+ DesktopInputSelectionControl(QObject *parent, InputContext *inputContext);
+ ~DesktopInputSelectionControl() {}
+
+ void createHandles();
+ void destroyHandles();
+ void setEnabled(bool enable);
+ QImage *handleImage();
+
+public Q_SLOTS:
+ void updateAnchorHandlePosition();
+ void updateCursorHandlePosition();
+ void updateVisibility();
+ void reloadGraphics();
+protected:
+ bool eventFilter(QObject *object, QEvent *event);
+
+private:
+ QRect anchorHandleRect() const;
+ QRect cursorHandleRect() const;
+ QRect handleRectForCursorRect(const QRectF &cursorRect) const;
+
+private:
+ InputContext *m_inputContext;
+ QSharedPointer<InputSelectionHandle> m_anchorSelectionHandle;
+ QSharedPointer<InputSelectionHandle> m_cursorSelectionHandle;
+ QImage m_handleImage;
+
+ enum {
+ HandleIsReleased = 0,
+ HandleIsHeld = 1,
+ HandleIsMoving = 2
+ };
+ enum HandleType {
+ AnchorHandle = 0,
+ CursorHandle = 1
+ };
+
+ unsigned m_handleState : 2;
+ unsigned m_currentDragHandle : 1;
+ unsigned m_enabled : 1;
+ unsigned m_anchorHandleVisible : 1;
+ unsigned m_cursorHandleVisible : 1;
+ unsigned m_eventFilterEnabled : 1;
+ QPoint m_otherSelectionPoint;
+ QVector <QMouseEvent*> m_eventQueue;
+ QPoint m_distanceBetweenMouseAndCursor;
+ QPoint m_handleDragStartedPosition;
+ QSize m_handleWindowSize;
+};
+} // namespace QtVirtualKeyboard
+
+#endif // DESKTOPINPUTSELECTIONCONTROL_H