qskinny/src/controls/QskGestureRecognizer.h

71 lines
1.6 KiB
C
Raw Normal View History

2017-07-21 18:21:34 +02:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_GESTURE_RECOGNIZER_H
#define QSK_GESTURE_RECOGNIZER_H
#include "QskGlobal.h"
2018-07-19 14:10:48 +02:00
#include <qnamespace.h>
2017-07-21 18:21:34 +02:00
#include <memory>
class QQuickItem;
class QEvent;
class QMouseEvent;
class QSK_EXPORT QskGestureRecognizer
{
2018-08-03 08:15:28 +02:00
public:
2017-07-21 18:21:34 +02:00
enum State
{
Idle,
Pending,
Accepted
};
QskGestureRecognizer();
virtual ~QskGestureRecognizer();
void setWatchedItem( QQuickItem* );
QQuickItem* watchedItem() const;
// Qt::NoButton means: all buttons accepted
void setAcceptedMouseButtons( Qt::MouseButtons );
Qt::MouseButtons acceptedMouseButtons() const;
void setTimeout( int );
int timeout() const;
// timestamp, when the Idle state had been left
2017-07-21 18:21:34 +02:00
ulong timestamp() const;
bool processEvent( QQuickItem*, QEvent*, bool blockReplayedEvents = true );
2017-07-21 18:21:34 +02:00
void reject();
void accept();
void abort();
State state() const;
bool isReplaying() const;
bool hasProcessedBefore( const QMouseEvent* ) const;
2018-08-03 08:15:28 +02:00
protected:
2017-07-21 18:21:34 +02:00
virtual void pressEvent( const QMouseEvent* );
virtual void moveEvent( const QMouseEvent* );
virtual void releaseEvent( const QMouseEvent* );
virtual void stateChanged( State from, State to );
2018-08-03 08:15:28 +02:00
private:
2017-07-21 18:21:34 +02:00
void setState( State );
void reset();
class PrivateData;
std::unique_ptr< PrivateData > m_data;
};
#endif