SXXXXXXX_PyBusMonitor1553/cpp/GrifoScope/GrifoMCS/GADS/GrifoADS/mcsvirtualjoystickwidget.cpp
2025-12-17 07:59:30 +01:00

224 lines
4.4 KiB
C++

#include "mcsvirtualjoystickwidget.h"
#include "ui_mcsvirtualjoystickwidget.h"
#include <QApplication>
#include <QMouseEvent>
#include <QKeyEvent>
#include <QWheelEvent>
#include "ads_mousegrabber.h"
McsVirtualJoystickWidget::McsVirtualJoystickWidget(IAdsMouseGrabber *theGrabber, QWidget *parent) :
QWidget(parent),
ui(new Ui::McsVirtualJoystickWidget)
{
ui->setupUi(this);
grabber=theGrabber;
setCursor(Qt::CrossCursor);
//setStyleSheet(QLatin1String("{color: transparent; background-color: transparent;}"));
//setAttribute(Qt::FramelessWindowHint);
//setAttribute(Qt::WA_TranslucentBackground);
}
McsVirtualJoystickWidget::~McsVirtualJoystickWidget()
{
delete ui;
}
void McsVirtualJoystickWidget::setGrabber(IAdsMouseGrabber* g)
{
grabber=g;
}
void McsVirtualJoystickWidget::activate()
{
if (!grabber)
return;
show();
QPoint glob = mapToGlobal(QPoint(width()/2,height()/2));
QCursor::setPos(glob);
grabMouse();
setMouseTracking(true);
//qDebug()<<"Activated";
grabber->activate(glob);
}
void McsVirtualJoystickWidget::deactivate()
{
setMouseTracking(false);
releaseMouse();
grabber->deactivate();
//qDebug()<<"Deactivated";
}
void McsVirtualJoystickWidget::hideEvent(QHideEvent */*event*/)
{
deactivate();
}
void McsVirtualJoystickWidget::showEvent(QShowEvent */*event*/)
{
//activate();
}
void McsVirtualJoystickWidget::keyPressEvent(QKeyEvent*)
{
if (QApplication::keyboardModifiers()!=Qt::ControlModifier)
{
deactivate();
hide();
}
}
void McsVirtualJoystickWidget::keyReleaseEvent(QKeyEvent* e)
{
if (QApplication::keyboardModifiers()!=Qt::ControlModifier)
{
deactivate();
hide();
}
}
void McsVirtualJoystickWidget::mouseMoveEvent(QMouseEvent* e)
{
if (QApplication::keyboardModifiers()!=Qt::ControlModifier)
{
deactivate();
hide();
}
else
{
grabber->mouseMove(e);
QPoint p=e->globalPos(); //mapToGlobal(e->pos());
grabber->cursorGotoXY(p.x(), p.y());
}
}
void McsVirtualJoystickWidget::mousePressEvent( QMouseEvent* e)
{
if (!grabber)
return;
grabber->mousePress(e);
}
void McsVirtualJoystickWidget::mouseReleaseEvent( QMouseEvent* e)
{
if (!grabber)
return;
grabber->mouseRelease(e);
}
void McsVirtualJoystickWidget::wheelEvent(QWheelEvent *e)
{
if (!grabber)
return;
grabber->mouseWheel(e);
}
McsVirtualJoystickDialog::McsVirtualJoystickDialog(QWidget* parent):
QDialog(parent, Qt::FramelessWindowHint)
{
//grabber=theGrabber;
setCursor(Qt::CrossCursor);
setAttribute(Qt::WA_TranslucentBackground);
//setWindowOpacity(0.5);
}
void McsVirtualJoystickDialog::setGrabber(IAdsMouseGrabber* g)
{
grabber=g;
}
void McsVirtualJoystickDialog::activate()
{
if (!grabber)
return;
show();
QPoint glob = mapToGlobal(QPoint(width()/2,height()/2));
QCursor::setPos(glob);
grabMouse();
setMouseTracking(true);
//qDebug()<<"Activated";
grabber->activate(glob);
}
void McsVirtualJoystickDialog::deactivate()
{
setMouseTracking(false);
releaseMouse();
grabber->deactivate();
//qDebug()<<"Deactivated";
}
void McsVirtualJoystickDialog::hideEvent(QHideEvent */*event*/)
{
deactivate();
}
void McsVirtualJoystickDialog::showEvent(QShowEvent */*event*/)
{
//activate();
}
void McsVirtualJoystickDialog::keyPressEvent(QKeyEvent*)
{
if (QApplication::keyboardModifiers()!=Qt::ControlModifier)
{
deactivate();
hide();
}
}
void McsVirtualJoystickDialog::keyReleaseEvent(QKeyEvent* e)
{
if (QApplication::keyboardModifiers()!=Qt::ControlModifier)
{
deactivate();
hide();
}
}
void McsVirtualJoystickDialog::mouseMoveEvent(QMouseEvent* e)
{
if (QApplication::keyboardModifiers()!=Qt::ControlModifier)
{
deactivate();
hide();
}
else
{
grabber->mouseMove(e);
QPoint p=e->globalPos(); //mapToGlobal(e->pos());
grabber->cursorGotoXY(p.x(), p.y());
}
}
void McsVirtualJoystickDialog::mousePressEvent( QMouseEvent* e)
{
if (!grabber)
return;
grabber->mousePress(e);
}
void McsVirtualJoystickDialog::mouseReleaseEvent( QMouseEvent* e)
{
if (!grabber)
return;
grabber->mouseRelease(e);
}
void McsVirtualJoystickDialog::wheelEvent(QWheelEvent *e)
{
if (!grabber)
return;
grabber->mouseWheel(e);
}