62 lines
1.8 KiB
C++
62 lines
1.8 KiB
C++
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
*
|
|
* Copyright (C) 2013 - 2024, nymea GmbH
|
|
* Copyright (C) 2024 - 2025, chargebyte austria GmbH
|
|
*
|
|
* This file is part of nymea-app.
|
|
*
|
|
* nymea-app is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* nymea-app is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with nymea-app. If not, see <https://www.gnu.org/licenses/>.
|
|
*
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
#include "mouseobserver.h"
|
|
|
|
#include <QCursor>
|
|
#include <QQuickWindow>
|
|
|
|
MouseObserver::MouseObserver(QQuickItem *parent) : QQuickItem(parent)
|
|
{
|
|
qCritical() << "*************************** creating observer" << window();
|
|
|
|
EventFilter *filter = new EventFilter(this);
|
|
connect(filter, &EventFilter::pressed, this, [=](){
|
|
m_timer.start();
|
|
});
|
|
connect(filter, &EventFilter::released, this, [=](){
|
|
m_timer.stop();
|
|
});
|
|
installEventFilter(filter);
|
|
setAcceptedMouseButtons(Qt::AllButtons);
|
|
|
|
|
|
m_timer.setInterval(200);
|
|
m_timer.setSingleShot(true);
|
|
connect(&m_timer, &QTimer::timeout, this, &MouseObserver::longPressed);
|
|
}
|
|
|
|
|
|
|
|
EventFilter::EventFilter(QObject *parent): QObject(parent)
|
|
{
|
|
|
|
}
|
|
|
|
bool EventFilter::eventFilter(QObject *watched, QEvent *event)
|
|
{
|
|
qWarning() << "************ eventfilter" << event->type();
|
|
return QObject::eventFilter(watched, event);
|
|
}
|