/* EventFilter.h */
/* Copyright (C) 2011-2020 Michael Lugmair (Lucio Carreras)
*
* This file is part of sayonara player
*
* This program 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.
* This program 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 this program. If not, see .
*/
#ifndef EVENTFILTER_H
#define EVENTFILTER_H
#include
#include
#include
class QAction;
class QMouseEvent;
namespace Gui
{
/**
* @brief The GenericFilter class
* @ingroup EventFilter
*/
class GenericFilter :
public QObject
{
Q_OBJECT
signals:
void sigEvent(QEvent::Type);
private:
QList m_types;
public:
explicit GenericFilter(const QEvent::Type& type, QObject* parent=nullptr);
explicit GenericFilter(const QList& types, QObject* parent=nullptr);
protected:
bool eventFilter(QObject* o , QEvent* e);
};
/**
* @brief The KeyPressFilter class
* @ingroup EventFilter
*/
class KeyPressFilter :
public QObject
{
Q_OBJECT
public:
explicit KeyPressFilter(QObject* parent=nullptr);
signals:
void setKeyPressed(int key);
protected:
bool eventFilter(QObject* o , QEvent* e);
};
/**
* @brief The ContextMenuFilter class
* @ingroup EventFilter
*/
class ContextMenuFilter :
public QObject
{
Q_OBJECT
public:
explicit ContextMenuFilter(QObject* parent=nullptr);
signals:
// directly connect this signal to QMenu::popup
void sigContextMenu(const QPoint& p, QAction* action);
protected:
bool eventFilter(QObject* o , QEvent* e);
};
/**
* @brief The MouseMoveFilter class
* @ingroup EventFilter
*/
class MouseMoveFilter :
public QObject
{
Q_OBJECT
public:
explicit MouseMoveFilter(QObject* parent=nullptr);
signals:
void sigMouseMoved(QMouseEvent* e);
protected:
bool eventFilter(QObject* o , QEvent* e);
};
/**
* @brief The MouseMoveFilter class
* @ingroup EventFilter
*/
class MousePressedFilter :
public QObject
{
Q_OBJECT
public:
explicit MousePressedFilter(QObject* parent=nullptr);
signals:
void sigMousePressed(QMouseEvent* e);
protected:
bool eventFilter(QObject* o , QEvent* e);
};
/**
* @brief The MouseMoveFilter class
* @ingroup EventFilter
*/
class MouseReleasedFilter :
public QObject
{
Q_OBJECT
public:
explicit MouseReleasedFilter(QObject* parent=nullptr);
signals:
void sigMouseReleased(QMouseEvent* e);
protected:
bool eventFilter(QObject* o , QEvent* e);
};
/**
* @brief The MouseEnterFilter class
* @ingroup EventFilter
*/
class MouseEnterFilter :
public QObject
{
Q_OBJECT
public:
explicit MouseEnterFilter(QObject* parent=nullptr);
signals:
void sigMouseEntered();
protected:
bool eventFilter(QObject* o, QEvent* e);
};
/**
* @brief The MouseLeaveFilter class
* @ingroup EventFilter
*/
class MouseLeaveFilter :
public QObject
{
Q_OBJECT
public:
explicit MouseLeaveFilter(QObject* parent=nullptr);
signals:
void sigMouseLeft();
protected:
bool eventFilter(QObject* o, QEvent* e);
};
/**
* @brief The HideFilter class
* @ingroup
*/
class HideFilter :
public QObject
{
Q_OBJECT
public:
explicit HideFilter(QObject* parent=nullptr);
signals:
void sigHidden();
protected:
bool eventFilter(QObject* o, QEvent* e);
};
/**
* @brief The ShowFilter class
* @ingroup EventFilter
*/
class ShowFilter :
public QObject
{
Q_OBJECT
public:
explicit ShowFilter(QObject* parent=nullptr);
signals:
void sigShown();
protected:
bool eventFilter(QObject* o, QEvent* e);
};
/**
* @brief The ShowFilter class
* @ingroup EventFilter
*/
class ResizeFilter :
public QObject
{
Q_OBJECT
public:
explicit ResizeFilter(QObject* parent=nullptr);
signals:
void sigResized(const QSize& newSize);
protected:
bool eventFilter(QObject* o, QEvent* e);
};
/**
* @brief The PaintFilter class
* @ingroup EventFilter
*/
class PaintFilter :
public QObject
{
Q_OBJECT
public:
explicit PaintFilter(QObject* parent=nullptr);
signals:
void sigPainted();
protected:
bool eventFilter(QObject* o, QEvent* e);
};
}
#endif // EVENTFILTER_H