[vlc-commits] Revert "Qt: add events extender"
Francois Cartegnie
git at videolan.org
Sun Apr 14 17:00:00 CEST 2013
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Sun Apr 14 16:57:44 2013 +0200| [4e47082423db0e1c8acc2392303bc87e9815c26d] | committer: Francois Cartegnie
Revert "Qt: add events extender"
Candidate user patch takes a different approach.
This reverts commit c38081e5680bb6c35c65ea8de3dfbd7c4e484586.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4e47082423db0e1c8acc2392303bc87e9815c26d
---
modules/gui/qt4/Modules.am | 3 -
modules/gui/qt4/util/events_extender.cpp | 144 ------------------------------
modules/gui/qt4/util/events_extender.hpp | 94 -------------------
3 files changed, 241 deletions(-)
diff --git a/modules/gui/qt4/Modules.am b/modules/gui/qt4/Modules.am
index 0fec168..7f7f2cb 100644
--- a/modules/gui/qt4/Modules.am
+++ b/modules/gui/qt4/Modules.am
@@ -72,7 +72,6 @@ nodist_SOURCES_qt4 = \
util/input_slider.moc.cpp \
util/timetooltip.moc.cpp \
util/customwidgets.moc.cpp \
- util/events_extender.moc.cpp \
util/searchlineedit.moc.cpp \
util/qmenuview.moc.cpp \
util/qvlcapp.moc.cpp \
@@ -340,7 +339,6 @@ SOURCES_qt4 = qt4.cpp \
util/input_slider.cpp \
util/timetooltip.cpp \
util/customwidgets.cpp \
- util/events_extender.cpp \
util/searchlineedit.cpp \
util/registry.cpp \
util/qmenuview.cpp \
@@ -421,7 +419,6 @@ noinst_HEADERS = \
util/input_slider.hpp \
util/timetooltip.hpp \
util/customwidgets.hpp \
- util/events_extender.hpp \
util/searchlineedit.hpp \
util/qvlcframe.hpp \
util/qvlcapp.hpp \
diff --git a/modules/gui/qt4/util/events_extender.cpp b/modules/gui/qt4/util/events_extender.cpp
deleted file mode 100644
index b184941..0000000
--- a/modules/gui/qt4/util/events_extender.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/*****************************************************************************
- * events_extender.cpp: Events Extenders / Modifiers
- ****************************************************************************
- * Copyright (C) 2013 the VideoLAN team
- *
- * 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 2 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, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include "events_extender.hpp"
-
-#include <QTimer>
-#include <QApplication>
-#include <QMouseEvent>
-
-const QEvent::Type MouseEventExtenderFilter::MouseButtonLongPress =
- (QEvent::Type)QEvent::registerEventType();
-const QEvent::Type MouseEventExtenderFilter::MouseButtonShortClick =
- (QEvent::Type)QEvent::registerEventType();
-const QEvent::Type MouseEventExtenderFilter::MouseButtonLongClick =
- (QEvent::Type)QEvent::registerEventType();
-
-MouseEventExtenderFilter::ButtonState::ButtonState( QObject *parent, Qt::MouseButton b )
-{
- state = RELEASED;
- button = b;
- timer = new QTimer( parent );
- timer->setInterval( 2 * QApplication::doubleClickInterval() );
- timer->setSingleShot( true );
- timer->installEventFilter( parent );
-}
-
-MouseEventExtenderFilter::ButtonState::~ButtonState()
-{
- delete timer;
-}
-
-//! MouseEventExtenderFilter constructor
-/*!
-\param The QObject we're extending events.
-*/
-MouseEventExtenderFilter::MouseEventExtenderFilter( QObject *parent ) : QObject( parent )
-{}
-
-MouseEventExtenderFilter::~MouseEventExtenderFilter()
-{
- qDeleteAll( buttonsStates.begin(), buttonsStates.end() );
-}
-
-MouseEventExtenderFilter::ButtonState * MouseEventExtenderFilter::getState( Qt::MouseButton button )
-{
- foreach( ButtonState *bs, buttonsStates )
- if ( bs->button == button )
- return bs;
-
- ButtonState *bs = new ButtonState( this, button );
- buttonsStates << bs;
- return bs;
-}
-
-MouseEventExtenderFilter::ButtonState * MouseEventExtenderFilter::getStateByTimer( int id )
-{
- foreach( ButtonState *bs, buttonsStates )
- if ( bs->timer->timerId() == id )
- return bs;
- return NULL;
-}
-
-void MouseEventExtenderFilter::postEvent( QObject *obj, QEvent::Type type, ButtonState *bs ) const
-{
- QApplication::postEvent( obj,
- new QMouseEvent( type, bs->localPos, bs->button, bs->buttons, bs->modifiers ) );
-}
-
-bool MouseEventExtenderFilter::eventFilter( QObject *obj, QEvent *e )
-{
- ButtonState *bs;
- QMouseEvent *mouseevent;
- QTimerEvent *timerevent;
-
- switch ( e->type() )
- {
- case QEvent::Timer:
- timerevent = static_cast<QTimerEvent *>(e);
- bs = getStateByTimer( timerevent->timerId() );
- if ( bs )
- {
- killTimer( timerevent->timerId() );
- bs->state = ButtonState::LONGPRESSED;
- postEvent( obj, MouseButtonLongPress, bs );
- }
- break;
-
- case QEvent::MouseButtonPress:
- mouseevent = static_cast<QMouseEvent *>(e);
- bs = getState( mouseevent->button() );
- bs->state = ButtonState::PRESSED;
- bs->localPos = mouseevent->pos();
- bs->buttons = mouseevent->buttons();
- bs->modifiers = mouseevent->modifiers();
- bs->timer->start();
- break;
-
- case QEvent::MouseButtonRelease:
- mouseevent = static_cast<QMouseEvent *>(e);
- bs = getState( mouseevent->button() );
- if ( bs->state == ButtonState::LONGPRESSED )
- postEvent( obj, MouseButtonLongClick, bs );
- else if ( bs->state == ButtonState::PRESSED )
- postEvent( obj, MouseButtonShortClick, bs );
- bs->state = ButtonState::RELEASED;
- bs->timer->stop();
- break;
-
- case QEvent::Leave:
- case QEvent::MouseButtonDblClick:
- mouseevent = static_cast<QMouseEvent *>(e);
- bs = getState( mouseevent->button() );
- bs->state = ButtonState::RELEASED;
- bs->timer->stop();
- // ff
-
- default:
- break;
- }
-
- /* Pass requests to original handler */
- return parent()->eventFilter( obj, e );
-}
diff --git a/modules/gui/qt4/util/events_extender.hpp b/modules/gui/qt4/util/events_extender.hpp
deleted file mode 100644
index 3bae638..0000000
--- a/modules/gui/qt4/util/events_extender.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/*****************************************************************************
- * events_extender.hpp: Events Extenders / Modifiers
- ****************************************************************************
- * Copyright (C) 2013 the VideoLAN team
- *
- * 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 2 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, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#ifndef EVENTS_EXTENDER_HPP
-#define EVENTS_EXTENDER_HPP
-
-#include <QObject>
-#include <QEvent>
-#include <QList>
-#include <QPoint>
-
-class QMouseEvent;
-class QTimer;
-
-//! MouseEventExtenderFilter
-/*!
-Adds special QObject mouse events per button: LongPress, ShortClick
-and LongClick.
-Use by registering the extender as Object's event Filter. Will pass
-back every original event to Object's filter.
-*/
-
-/* Note: The Extender being a QObject too, you can chain multiple extenders */
-
-class MouseEventExtenderFilter : public QObject
-{
- Q_OBJECT
-
-public:
- //! MouseButtonLongPress Event.
- /*!
- Fired when the mouse has been pressed for longer than a single
- click time.
- */
- static const QEvent::Type MouseButtonLongPress;
- //! MouseButtonShortClick Event.
- /*!
- Single mouse click event. Sent by extender to differenciate
- from the Object's unmodified clicked() signal.
- */
- static const QEvent::Type MouseButtonShortClick;
- //! MouseButtonLongClick Event.
- /*!
- Single mouse long click event. Preceded by a LongPress Event.
- */
- static const QEvent::Type MouseButtonLongClick;
- MouseEventExtenderFilter( QObject *parent );
- ~MouseEventExtenderFilter();
-
-protected:
- bool eventFilter( QObject *, QEvent * );
-
-private:
- class ButtonState
- {
- public:
- ButtonState( QObject *, Qt::MouseButton );
- ~ButtonState();
- enum
- {
- RELEASED,
- PRESSED,
- LONGPRESSED
- } state;
- QPoint localPos;
- Qt::MouseButton button;
- Qt::MouseButtons buttons;
- Qt::KeyboardModifiers modifiers;
- QTimer *timer;
- };
- ButtonState * getState( Qt::MouseButton );
- ButtonState * getStateByTimer( int );
- void postEvent( QObject *, QEvent::Type, ButtonState * ) const;
- QList<ButtonState *> buttonsStates;
-};
-
-#endif // EVENTS_EXTENDER_HPP
More information about the vlc-commits
mailing list