mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-16 23:57:57 -05:00
yuzu: Add motion and touch configuration
This commit is contained in:
61
src/yuzu/configuration/configure_touch_widget.h
Normal file
61
src/yuzu/configuration/configure_touch_widget.h
Normal file
@ -0,0 +1,61 @@
|
||||
// Copyright 2020 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <optional>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <QFrame>
|
||||
#include <QPointer>
|
||||
|
||||
class QLabel;
|
||||
|
||||
// Widget for representing touchscreen coordinates
|
||||
class TouchScreenPreview : public QFrame {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QColor dotHighlightColor MEMBER dot_highlight_color)
|
||||
|
||||
public:
|
||||
explicit TouchScreenPreview(QWidget* parent);
|
||||
~TouchScreenPreview() override;
|
||||
|
||||
void SetCoordLabel(QLabel*);
|
||||
int AddDot(int device_x, int device_y);
|
||||
void RemoveDot(int id);
|
||||
void HighlightDot(int id, bool active = true) const;
|
||||
void MoveDot(int id, int device_x, int device_y) const;
|
||||
|
||||
signals:
|
||||
void DotAdded(const QPoint& pos);
|
||||
void DotSelected(int dot_id);
|
||||
void DotMoved(int dot_id, const QPoint& pos);
|
||||
|
||||
protected:
|
||||
virtual void resizeEvent(QResizeEvent*) override;
|
||||
virtual void mouseMoveEvent(QMouseEvent*) override;
|
||||
virtual void leaveEvent(QEvent*) override;
|
||||
virtual void mousePressEvent(QMouseEvent*) override;
|
||||
virtual bool eventFilter(QObject*, QEvent*) override;
|
||||
|
||||
private:
|
||||
std::optional<QPoint> MapToDeviceCoords(int screen_x, int screen_y) const;
|
||||
void PositionDot(QLabel* dot, int device_x = -1, int device_y = -1) const;
|
||||
|
||||
bool ignore_resize = false;
|
||||
QPointer<QLabel> coord_label;
|
||||
|
||||
std::vector<std::pair<int, QLabel*>> dots;
|
||||
int max_dot_id = 0;
|
||||
QColor dot_highlight_color;
|
||||
static constexpr char PropId[] = "dot_id";
|
||||
static constexpr char PropX[] = "device_x";
|
||||
static constexpr char PropY[] = "device_y";
|
||||
|
||||
struct {
|
||||
bool active = false;
|
||||
QPointer<QLabel> dot;
|
||||
QPoint start_pos;
|
||||
} drag_state;
|
||||
};
|
Reference in New Issue
Block a user