new class for controlling high res touchpads

This commit is contained in:
Luis Ángel San Martín 2015-01-23 18:53:59 +01:00
parent 976935b86d
commit d7a99ec639
8 changed files with 434 additions and 375 deletions

View File

@ -101,6 +101,7 @@ HEADERS += $$PWD/../common/comic.h \
$$PWD/yacreader_local_client.h \ $$PWD/yacreader_local_client.h \
$$PWD/../common/http_worker.h \ $$PWD/../common/http_worker.h \
$$PWD/../common/exit_check.h \ $$PWD/../common/exit_check.h \
$$PWD/../common/scroll_management.h
SOURCES += $$PWD/../common/comic.cpp \ SOURCES += $$PWD/../common/comic.cpp \
$$PWD/configuration.cpp \ $$PWD/configuration.cpp \
@ -135,6 +136,7 @@ SOURCES += $$PWD/../common/comic.cpp \
$$PWD/../common/http_worker.cpp \ $$PWD/../common/http_worker.cpp \
$$PWD/../common/yacreader_global.cpp \ $$PWD/../common/yacreader_global.cpp \
$$PWD/../common/exit_check.cpp \ $$PWD/../common/exit_check.cpp \
$$PWD/../common/scroll_management.cpp
include($$PWD/../custom_widgets/custom_widgets_yacreader.pri) include($$PWD/../custom_widgets/custom_widgets_yacreader.pri)
include($$PWD/../compressed_archive/wrapper.pri) include($$PWD/../compressed_archive/wrapper.pri)

View File

@ -475,30 +475,36 @@ void Viewer::wheelEvent(QWheelEvent * event)
{ {
if(render->hasLoadedComic()) if(render->hasLoadedComic())
{ {
if((event->delta()<0)&&(verticalScrollBar()->sliderPosition()==verticalScrollBar()->maximum())) if((event->delta()<0)&&(verticalScrollBar()->sliderPosition()==verticalScrollBar()->maximum()))
{ {
if(wheelStop) if(wheelStop)
{ {
next(); if(getMovement(event) == Forward)
verticalScroller->stop(); {
event->accept(); next();
wheelStop = false; verticalScroller->stop();
return; event->accept();
} wheelStop = false;
else }
wheelStop = true; return;
} }
else else
wheelStop = true;
}
else
{ {
if((event->delta()>0)&&(verticalScrollBar()->sliderPosition()==verticalScrollBar()->minimum())) if((event->delta()>0)&&(verticalScrollBar()->sliderPosition()==verticalScrollBar()->minimum()))
{ {
if(wheelStop) if(wheelStop)
{ {
prev(); if(getMovement(event) == Backward)
verticalScroller->stop(); {
event->accept(); prev();
wheelStop = false; verticalScroller->stop();
return; event->accept();
wheelStop = false;
}
return;
} }
else else
wheelStop = true; wheelStop = true;

View File

@ -16,6 +16,8 @@
#include <QPropertyAnimation> #include <QPropertyAnimation>
#include <QSettings> #include <QSettings>
#include "scroll_management.h"
class ComicDB; class ComicDB;
class Comic; class Comic;
class MagnifyingGlass; class MagnifyingGlass;
@ -29,7 +31,7 @@ class Bookmarks;
class PageLabelWidget; class PageLabelWidget;
class NotificationsLabelWidget; class NotificationsLabelWidget;
class Viewer : public QScrollArea class Viewer : public QScrollArea, public ScrollManagement
{ {
Q_OBJECT Q_OBJECT
public: public:

View File

@ -1,302 +1,304 @@
###################################################################### ######################################################################
# Automatically generated by qmake (2.01a) dom 12. oct 20:47:48 2008 # Automatically generated by qmake (2.01a) dom 12. oct 20:47:48 2008
###################################################################### ######################################################################
TEMPLATE = app TEMPLATE = app
TARGET = YACReaderLibrary TARGET = YACReaderLibrary
DEPENDPATH += . DEPENDPATH += .
INCLUDEPATH += . INCLUDEPATH += .
INCLUDEPATH += ../common \ INCLUDEPATH += ../common \
./server \ ./server \
./db \ ./db \
../custom_widgets \ ../custom_widgets \
./comic_vine \ ./comic_vine \
./comic_vine/model ./comic_vine/model
DEFINES += SERVER_RELEASE NOMINMAX YACREADER_LIBRARY DEFINES += SERVER_RELEASE NOMINMAX YACREADER_LIBRARY
win32 { win32 {
LIBS += -L../dependencies/poppler/lib -loleaut32 -lole32 -lshell32 LIBS += -L../dependencies/poppler/lib -loleaut32 -lole32 -lshell32
isEqual(QT_MAJOR_VERSION, 5) { isEqual(QT_MAJOR_VERSION, 5) {
LIBS += -lpoppler-qt5 LIBS += -lpoppler-qt5
INCLUDEPATH += ../dependencies/poppler/include/qt5 INCLUDEPATH += ../dependencies/poppler/include/qt5
} }
else { else {
LIBS += -lpoppler-qt4 LIBS += -lpoppler-qt4
INCLUDEPATH += ../dependencies/poppler/include/qt4 INCLUDEPATH += ../dependencies/poppler/include/qt4
} }
#QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL #QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL
#QMAKE_LFLAGS_RELEASE += /LTCG #QMAKE_LFLAGS_RELEASE += /LTCG
CONFIG -= embed_manifest_exe CONFIG -= embed_manifest_exe
} }
unix:!macx{ unix:!macx{
isEqual(QT_MAJOR_VERSION, 5) { isEqual(QT_MAJOR_VERSION, 5) {
INCLUDEPATH += /usr/include/poppler/qt5 INCLUDEPATH += /usr/include/poppler/qt5
LIBS += -L/usr/lib -lpoppler-qt5 LIBS += -L/usr/lib -lpoppler-qt5
} }
else { else {
INCLUDEPATH += /usr/include/poppler/qt4 INCLUDEPATH += /usr/include/poppler/qt4
LIBS += -L/usr/lib -lpoppler-qt4 LIBS += -L/usr/lib -lpoppler-qt4
} }
LIBS += -lGLU LIBS += -lGLU
} }
macx{ macx{
#INCLUDEPATH += "/Volumes/Mac OS X Lion/usr/X11/include" #INCLUDEPATH += "/Volumes/Mac OS X Lion/usr/X11/include"
#isEqual(QT_MAJOR_VERSION, 5) { #isEqual(QT_MAJOR_VERSION, 5) {
#INCLUDEPATH += /usr/local/include/poppler/qt5 #INCLUDEPATH += /usr/local/include/poppler/qt5
#LIBS += -L/usr/local/lib -lpoppler-qt5 #LIBS += -L/usr/local/lib -lpoppler-qt5
#} #}
#else { #else {
#INCLUDEPATH += /usr/local/include/poppler/qt4 #INCLUDEPATH += /usr/local/include/poppler/qt4
#LIBS += -L/usr/local/lib -lpoppler-qt4 #LIBS += -L/usr/local/lib -lpoppler-qt4
#} #}
#QT += macextras #QT += macextras
LIBS += -framework Foundation -framework ApplicationServices -framework AppKit LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
OBJECTIVE_SOURCES += $$PWD/../common/pdf_comic.mm OBJECTIVE_SOURCES += $$PWD/../common/pdf_comic.mm
HEADERS += $$PWD/../common/pdf_comic.h HEADERS += $$PWD/../common/pdf_comic.h
CONFIG += objective_c CONFIG += objective_c
QT += macextras gui-private QT += macextras gui-private
} }
unix{ unix{
QMAKE_CXXFLAGS += -std=c++11 QMAKE_CXXFLAGS += -std=c++11
} }
#CONFIG += release #CONFIG += release
CONFIG -= flat CONFIG -= flat
QT += sql network opengl script QT += sql network opengl script
# Input # Input
HEADERS += comic_flow.h \ HEADERS += comic_flow.h \
create_library_dialog.h \ create_library_dialog.h \
library_creator.h \ library_creator.h \
library_window.h \ library_window.h \
add_library_dialog.h \ add_library_dialog.h \
rename_library_dialog.h \ rename_library_dialog.h \
properties_dialog.h \ properties_dialog.h \
options_dialog.h \ options_dialog.h \
export_library_dialog.h \ export_library_dialog.h \
import_library_dialog.h \ import_library_dialog.h \
package_manager.h \ package_manager.h \
bundle_creator.h \ bundle_creator.h \
export_comics_info_dialog.h \ export_comics_info_dialog.h \
import_comics_info_dialog.h \ import_comics_info_dialog.h \
server_config_dialog.h \ server_config_dialog.h \
comic_flow_widget.h \ comic_flow_widget.h \
db_helper.h \ db_helper.h \
./db/data_base_management.h \ ./db/data_base_management.h \
./db/folder_item.h \ ./db/folder_item.h \
./db/folder_model.h \ ./db/folder_model.h \
./db/comic_model.h \ ./db/comic_model.h \
./db/comic_item.h \ ./db/comic_item.h \
../common/comic_db.h \ ../common/comic_db.h \
../common/folder.h \ ../common/folder.h \
../common/library_item.h \ ../common/library_item.h \
../common/comic.h \ ../common/comic.h \
../common/bookmarks.h \ ../common/bookmarks.h \
../common/pictureflow.h \ ../common/pictureflow.h \
../common/custom_widgets.h \ ../common/custom_widgets.h \
../common/qnaturalsorting.h \ ../common/qnaturalsorting.h \
../common/yacreader_flow_gl.h \ ../common/yacreader_flow_gl.h \
../common/yacreader_global.h \ ../common/yacreader_global.h \
../common/onstart_flow_selection_dialog.h \ ../common/onstart_flow_selection_dialog.h \
no_libraries_widget.h \ no_libraries_widget.h \
import_widget.h \ import_widget.h \
yacreader_local_server.h \ yacreader_local_server.h \
yacreader_main_toolbar.h \ yacreader_main_toolbar.h \
comics_remover.h \ comics_remover.h \
../common/http_worker.h \ ../common/http_worker.h \
yacreader_libraries.h \ yacreader_libraries.h \
../common/exit_check.h \ ../common/exit_check.h \
comics_view.h \ comics_view.h \
classic_comics_view.h \ classic_comics_view.h \
empty_folder_widget.h \ empty_folder_widget.h \
no_search_results_widget.h \ no_search_results_widget.h \
comic_files_manager.h \ comic_files_manager.h \
db/reading_list_model.h \ db/reading_list_model.h \
db/reading_list_item.h \ db/reading_list_item.h \
yacreader_folders_view.h \ yacreader_folders_view.h \
yacreader_reading_lists_view.h \ yacreader_reading_lists_view.h \
add_label_dialog.h \ add_label_dialog.h \
yacreader_history_controller.h \ yacreader_history_controller.h \
yacreader_navigation_controller.h \ yacreader_navigation_controller.h \
empty_label_widget.h \ empty_label_widget.h \
empty_container_info.h \ empty_container_info.h \
empty_special_list.h \ empty_special_list.h \
empty_reading_list_widget.h empty_reading_list_widget.h \
../common/scroll_management.h
SOURCES += comic_flow.cpp \
create_library_dialog.cpp \ SOURCES += comic_flow.cpp \
library_creator.cpp \ create_library_dialog.cpp \
library_window.cpp \ library_creator.cpp \
main.cpp \ library_window.cpp \
add_library_dialog.cpp \ main.cpp \
rename_library_dialog.cpp \ add_library_dialog.cpp \
properties_dialog.cpp \ rename_library_dialog.cpp \
options_dialog.cpp \ properties_dialog.cpp \
export_library_dialog.cpp \ options_dialog.cpp \
import_library_dialog.cpp \ export_library_dialog.cpp \
package_manager.cpp \ import_library_dialog.cpp \
bundle_creator.cpp \ package_manager.cpp \
export_comics_info_dialog.cpp \ bundle_creator.cpp \
import_comics_info_dialog.cpp \ export_comics_info_dialog.cpp \
server_config_dialog.cpp \ import_comics_info_dialog.cpp \
comic_flow_widget.cpp \ server_config_dialog.cpp \
db_helper.cpp \ comic_flow_widget.cpp \
./db/data_base_management.cpp \ db_helper.cpp \
./db/folder_item.cpp \ ./db/data_base_management.cpp \
./db/folder_model.cpp \ ./db/folder_item.cpp \
./db/comic_model.cpp \ ./db/folder_model.cpp \
./db/comic_item.cpp \ ./db/comic_model.cpp \
../common/comic_db.cpp \ ./db/comic_item.cpp \
../common/folder.cpp \ ../common/comic_db.cpp \
../common/library_item.cpp \ ../common/folder.cpp \
../common/comic.cpp \ ../common/library_item.cpp \
../common/bookmarks.cpp \ ../common/comic.cpp \
../common/pictureflow.cpp \ ../common/bookmarks.cpp \
../common/custom_widgets.cpp \ ../common/pictureflow.cpp \
../common/qnaturalsorting.cpp \ ../common/custom_widgets.cpp \
../common/yacreader_flow_gl.cpp \ ../common/qnaturalsorting.cpp \
../common/onstart_flow_selection_dialog.cpp \ ../common/yacreader_flow_gl.cpp \
no_libraries_widget.cpp \ ../common/onstart_flow_selection_dialog.cpp \
import_widget.cpp \ no_libraries_widget.cpp \
yacreader_local_server.cpp \ import_widget.cpp \
yacreader_main_toolbar.cpp \ yacreader_local_server.cpp \
comics_remover.cpp \ yacreader_main_toolbar.cpp \
../common/http_worker.cpp \ comics_remover.cpp \
../common/yacreader_global.cpp \ ../common/http_worker.cpp \
yacreader_libraries.cpp \ ../common/yacreader_global.cpp \
../common/exit_check.cpp \ yacreader_libraries.cpp \
comics_view.cpp \ ../common/exit_check.cpp \
classic_comics_view.cpp \ comics_view.cpp \
empty_folder_widget.cpp \ classic_comics_view.cpp \
no_search_results_widget.cpp \ empty_folder_widget.cpp \
comic_files_manager.cpp \ no_search_results_widget.cpp \
db/reading_list_model.cpp \ comic_files_manager.cpp \
db/reading_list_item.cpp \ db/reading_list_model.cpp \
yacreader_folders_view.cpp \ db/reading_list_item.cpp \
yacreader_reading_lists_view.cpp \ yacreader_folders_view.cpp \
add_label_dialog.cpp \ yacreader_reading_lists_view.cpp \
yacreader_history_controller.cpp \ add_label_dialog.cpp \
yacreader_navigation_controller.cpp \ yacreader_history_controller.cpp \
empty_label_widget.cpp \ yacreader_navigation_controller.cpp \
empty_container_info.cpp \ empty_label_widget.cpp \
empty_special_list.cpp \ empty_container_info.cpp \
empty_reading_list_widget.cpp empty_special_list.cpp \
empty_reading_list_widget.cpp \
../common/scroll_management.cpp
include(./server/server.pri)
include(../custom_widgets/custom_widgets_yacreaderlibrary.pri)
include(../compressed_archive/wrapper.pri) include(./server/server.pri)
include(./comic_vine/comic_vine.pri) include(../custom_widgets/custom_widgets_yacreaderlibrary.pri)
include(../QsLog/QsLog.pri) include(../compressed_archive/wrapper.pri)
include(../shortcuts_management/shortcuts_management.pri) include(./comic_vine/comic_vine.pri)
include(../QsLog/QsLog.pri)
RESOURCES += images.qrc files.qrc include(../shortcuts_management/shortcuts_management.pri)
win32:RESOURCES += images_win.qrc
unix:!macx:RESOURCES += images_win.qrc RESOURCES += images.qrc files.qrc
macx:RESOURCES += images_osx.qrc win32:RESOURCES += images_win.qrc
unix:!macx:RESOURCES += images_win.qrc
RC_FILE = icon.rc macx:RESOURCES += images_osx.qrc
macx { RC_FILE = icon.rc
ICON = YACReaderLibrary.icns
} macx {
ICON = YACReaderLibrary.icns
TRANSLATIONS = yacreaderlibrary_es.ts \ }
yacreaderlibrary_ru.ts \
yacreaderlibrary_pt.ts \ TRANSLATIONS = yacreaderlibrary_es.ts \
yacreaderlibrary_fr.ts \ yacreaderlibrary_ru.ts \
yacreaderlibrary_nl.ts \ yacreaderlibrary_pt.ts \
yacreaderlibrary_tr.ts \ yacreaderlibrary_fr.ts \
yacreaderlibrary_de.ts \ yacreaderlibrary_nl.ts \
yacreaderlibrary_source.ts yacreaderlibrary_tr.ts \
yacreaderlibrary_de.ts \
isEqual(QT_MAJOR_VERSION, 5) { yacreaderlibrary_source.ts
Release:DESTDIR = ../release5
Debug:DESTDIR = ../debug5 isEqual(QT_MAJOR_VERSION, 5) {
Release:DESTDIR = ../release5
#QML/GridView Debug:DESTDIR = ../debug5
QT += quick qml
#QML/GridView
HEADERS += grid_comics_view.h \ QT += quick qml
comics_view_transition.h
HEADERS += grid_comics_view.h \
SOURCES += grid_comics_view.cpp \ comics_view_transition.h
comics_view_transition.cpp
SOURCES += grid_comics_view.cpp \
RESOURCES += qml.qrc comics_view_transition.cpp
win32:RESOURCES += qml_win.qrc
unix:!macx:RESOURCES += qml_win.qrc RESOURCES += qml.qrc
macx:RESOURCES += qml_osx.qrc win32:RESOURCES += qml_win.qrc
unix:!macx:RESOURCES += qml_win.qrc
} else { macx:RESOURCES += qml_osx.qrc
Release:DESTDIR = ../release
Debug:DESTDIR = ../debug } else {
} Release:DESTDIR = ../release
Debug:DESTDIR = ../debug
win32 { }
!exists(../compressed_archive/lib7zip){
error(You\'ll need 7zip source code to compile YACReader. \ win32 {
Please check the compressed_archive folder for further instructions.) !exists(../compressed_archive/lib7zip){
} error(You\'ll need 7zip source code to compile YACReader. \
} Please check the compressed_archive folder for further instructions.)
}
unix { }
exists (../compressed_archive/libp7zip) {
message(Found p7zip source code...) unix {
system(patch -d ../compressed_archive -N -p0 -i libp7zip.patch) exists (../compressed_archive/libp7zip) {
} else { message(Found p7zip source code...)
error(You\'ll need 7zip source code to compile YACReader. \ system(patch -d ../compressed_archive -N -p0 -i libp7zip.patch)
Please check the compressed_archive folder for further instructions.) } else {
} error(You\'ll need 7zip source code to compile YACReader. \
} Please check the compressed_archive folder for further instructions.)
}
unix:!macx { }
#set install prefix if it's empty
isEmpty(PREFIX) { unix:!macx {
PREFIX = /usr #set install prefix if it's empty
} isEmpty(PREFIX) {
PREFIX = /usr
BINDIR = $$PREFIX/bin }
LIBDIR = $$PREFIX/lib
DATADIR = $$PREFIX/share BINDIR = $$PREFIX/bin
LIBDIR = $$PREFIX/lib
DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" "BINDIR=\\\"$$BINDIR\\\"" DATADIR = $$PREFIX/share
#MAKE INSTALL DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" "BINDIR=\\\"$$BINDIR\\\""
INSTALLS += bin icon desktop server translation manpage
#MAKE INSTALL
bin.path = $$BINDIR INSTALLS += bin icon desktop server translation manpage
isEmpty(DESTDIR) {
bin.files = YACReaderLibrary bin.path = $$BINDIR
} else { isEmpty(DESTDIR) {
bin.files = $$DESTDIR/YACReaderLibrary bin.files = YACReaderLibrary
} } else {
bin.files = $$DESTDIR/YACReaderLibrary
server.path = $$DATADIR/yacreader }
server.files = ../release/server
server.path = $$DATADIR/yacreader
icon.path = $$DATADIR/yacreader server.files = ../release/server
icon.files = ../images/iconLibrary.png ../images/db.png ../images/coversPackage.png
icon.path = $$DATADIR/yacreader
desktop.path = $$DATADIR/applications icon.files = ../images/iconLibrary.png ../images/db.png ../images/coversPackage.png
desktop.extra = desktop-file-edit --set-icon=$$DATADIR/yacreader/iconLibrary.png $$PWD/../YACReaderLibrary.desktop
desktop.files = ../YACReaderLibrary.desktop desktop.path = $$DATADIR/applications
#TODO: icons should be located at /usr/share/icons and have the same basename as their application desktop.extra = desktop-file-edit --set-icon=$$DATADIR/yacreader/iconLibrary.png $$PWD/../YACReaderLibrary.desktop
desktop.files = ../YACReaderLibrary.desktop
translation.path = $$DATADIR/yacreader/languages #TODO: icons should be located at /usr/share/icons and have the same basename as their application
translation.files = ../release/languages/yacreaderlibrary_*
translation.path = $$DATADIR/yacreader/languages
manpage.path = $$DATADIR/man/man1 translation.files = ../release/languages/yacreaderlibrary_*
manpage.files = ../YACReaderLibrary.1
} manpage.path = $$DATADIR/man/man1
manpage.files = ../YACReaderLibrary.1
}

View File

@ -0,0 +1,61 @@
#include "scroll_management.h"
ScrollManagement::ScrollManagement()
{
wheelTimer = new QTime();
wheelTimer->start();
wheelAccumulator = 0;
}
ScrollManagement::Movement ScrollManagement::getMovement(QWheelEvent *event)
{
/*QLOG_DEBUG() << "WheelEvent angle delta : " << event->angleDelta();
QLOG_DEBUG() << "WheelEvent pixel delta : " << event->pixelDelta();*/
int tooFast = 1;
int timeThrottle = 16;
int minimumMove = 70;
//avoid any events overflood
if((wheelTimer->elapsed() < tooFast)){
event->setAccepted(true);
return None;
}
// Accumulate the delta
if(event->delta()<0 != wheelAccumulator<0 ) //different sign means change in direction
wheelAccumulator = 0;
wheelAccumulator += event->delta();
//Do not process events too fast
if((wheelTimer->elapsed() < timeThrottle)){
event->setAccepted(true);
return None;
}
//small intervals are ignored until with have enough acumulated delta
if((wheelAccumulator < minimumMove) && (wheelAccumulator > -minimumMove)){
event->setAccepted(true);
return None;
}
Movement m;
if(wheelAccumulator<0)
m = Forward;
else
m = Backward;
event->accept();
//Clean up
wheelAccumulator = 0;
wheelTimer->restart();
return m;
}
ScrollManagement::~ScrollManagement()
{
}

View File

@ -0,0 +1,25 @@
#ifndef SCROLLMANAGAMENT_H
#define SCROLLMANAGAMENT_H
#include <QTime>
#include <QWheelEvent>
class ScrollManagement
{
public:
enum Movement{
None,
Forward,
Backward
};
ScrollManagement();
ScrollManagement::Movement getMovement(QWheelEvent * event);
~ScrollManagement();
private:
QTime * wheelTimer;
int wheelAccumulator;
};
#endif // SCROLLMANAGAMENT_H

View File

@ -247,11 +247,6 @@ YACReaderFlowGL::YACReaderFlowGL(QWidget *parent,struct Preset p)
setFormat(f); setFormat(f);
timerId = startTimer(updateInterval); timerId = startTimer(updateInterval);
wheelTimer = new QTime();
wheelTimer->start();
wheelAccumulator = 0;
} }
void YACReaderFlowGL::timerEvent(QTimerEvent * event) void YACReaderFlowGL::timerEvent(QTimerEvent * event)
@ -1049,51 +1044,19 @@ void YACReaderFlowGL::render()
#include "QsLog.h" #include "QsLog.h"
void YACReaderFlowGL::wheelEvent(QWheelEvent * event) void YACReaderFlowGL::wheelEvent(QWheelEvent * event)
{ {
/*QLOG_DEBUG() << "WheelEvent angle delta : " << event->angleDelta(); Movement m = getMovement(event);
QLOG_DEBUG() << "WheelEvent pixel delta : " << event->pixelDelta();*/ switch (m) {
case None:
/*if(event->delta()<0)
showNext();
else
showPrevious();
event->accept();*/
int tooFast = 1;
int timeThrottle = 16;
int minimumMove = 70;
//avoid any events overflood
if((wheelTimer->elapsed() < tooFast)){
event->setAccepted(true);
return; return;
case Forward:
showNext();
break;
case Backward:
showPrevious();
break;
default:
break;
} }
// Accumulate the delta
if(event->delta()<0 != wheelAccumulator<0 ) //different sign means change in direction
wheelAccumulator = 0;
wheelAccumulator += event->delta();
//Do not process events too fast
if((wheelTimer->elapsed() < timeThrottle)){
event->setAccepted(true);
return;
}
//small intervals are ignored until with have enough acumulated delta
if((wheelAccumulator < minimumMove) && (wheelAccumulator > -minimumMove)){
event->setAccepted(true);
return;
}
if(wheelAccumulator<0)
showNext();
else
showPrevious();
event->accept();
//Clean up
wheelAccumulator = 0;
wheelTimer->restart();
} }
void YACReaderFlowGL::keyPressEvent(QKeyEvent *event) void YACReaderFlowGL::keyPressEvent(QKeyEvent *event)

View File

@ -13,6 +13,7 @@
#include <QtWidgets> #include <QtWidgets>
#include "pictureflow.h" //TODO mover los tipos de flow de sitio #include "pictureflow.h" //TODO mover los tipos de flow de sitio
#include "scroll_management.h"
class ImageLoaderGL; class ImageLoaderGL;
class QGLContext; class QGLContext;
@ -104,7 +105,7 @@ extern struct Preset presetYACReaderFlowOverlappedStripeConfig;
extern struct Preset pressetYACReaderFlowUpConfig; extern struct Preset pressetYACReaderFlowUpConfig;
extern struct Preset pressetYACReaderFlowDownConfig; extern struct Preset pressetYACReaderFlowDownConfig;
class YACReaderFlowGL : public QOpenGLWidget class YACReaderFlowGL : public QOpenGLWidget, public ScrollManagement
{ {
Q_OBJECT Q_OBJECT
protected: protected:
@ -175,9 +176,6 @@ protected:
void startAnimationTimer(); void startAnimationTimer();
void stopAnimationTimer(); void stopAnimationTimer();
QTime * wheelTimer;
int wheelAccumulator;
public: public: