Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
QtSurface.java
Go to the documentation of this file.
1// Copyright (C) 2014 BogDan Vatra <bogdan@kde.org>
2// Copyright (C) 2016 The Qt Company Ltd.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5package org.qtproject.qt.android;
6
7import android.app.Activity;
8import android.content.Context;
9import android.graphics.PixelFormat;
10import android.view.GestureDetector;
11import android.view.MotionEvent;
12import android.view.SurfaceHolder;
13import android.view.SurfaceView;
14
15import java.lang.reflect.Constructor;
16import java.lang.reflect.Method;
17
18public class QtSurface extends SurfaceView implements SurfaceHolder.Callback
19{
20 private GestureDetector m_gestureDetector;
21 private Object m_accessibilityDelegate = null;
22
23 public QtSurface(Context context, int id, boolean onTop, int imageDepth)
24 {
25 super(context);
26 setFocusable(false);
27 setFocusableInTouchMode(false);
28 setZOrderMediaOverlay(onTop);
29 getHolder().addCallback(this);
30 if (imageDepth == 16)
31 getHolder().setFormat(PixelFormat.RGB_565);
32 else
33 getHolder().setFormat(PixelFormat.RGBA_8888);
34
35 setId(id);
36 m_gestureDetector =
37 new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
38 public void onLongPress(MotionEvent event) {
39 QtNative.longPress(getId(), (int) event.getX(), (int) event.getY());
40 }
41 });
42 m_gestureDetector.setIsLongpressEnabled(true);
43 }
44
45 @Override
46 public void surfaceCreated(SurfaceHolder holder)
47 {
48 }
49
50 @Override
51 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
52 {
53 if (width < 1 || height < 1)
54 return;
55
56 QtNative.setSurface(getId(), holder.getSurface(), width, height);
57 }
58
59 @Override
60 public void surfaceDestroyed(SurfaceHolder holder)
61 {
62 QtNative.setSurface(getId(), null, 0, 0);
63 }
64
65 @Override
66 public boolean onTouchEvent(MotionEvent event)
67 {
68 // QTBUG-65927
69 // Fix event positions depending on Surface position.
70 // In case when Surface is moved, we should also add this move to event position
71 event.setLocation(event.getX() + getX(), event.getY() + getY());
72
74 m_gestureDetector.onTouchEvent(event);
75 return true;
76 }
77
78 @Override
79 public boolean onTrackballEvent(MotionEvent event)
80 {
82 return true;
83 }
84
85 @Override
86 public boolean onGenericMotionEvent(MotionEvent event)
87 {
88 return QtNative.sendGenericMotionEvent(event, getId());
89 }
90}
Definition main.cpp:8
static native void setSurface(int id, Object surface, int w, int h)
static void sendTrackballEvent(MotionEvent event, int id)
static boolean sendGenericMotionEvent(MotionEvent event, int id)
static void sendTouchEvent(MotionEvent event, int id)
void surfaceCreated(SurfaceHolder holder)
void surfaceDestroyed(SurfaceHolder holder)
void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
QtSurface(Context context, int id, boolean onTop, int imageDepth)
boolean onTrackballEvent(MotionEvent event)
boolean onTouchEvent(MotionEvent event)
boolean onGenericMotionEvent(MotionEvent event)
employee setId(37)
static void * context
GLint GLsizei GLsizei height
GLint GLsizei width
GLint GLsizei GLsizei GLenum format
struct _cl_event * event
QT_BEGIN_NAMESPACE typedef void(* Callback)(QQmlNotifierEndpoint *, void **)