mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 10:46:35 +01:00
[AutoScroll] Added AutoScroll plugin
I'm still looking for some icon. For now, only red square is shown.
This commit is contained in:
parent
22e195b621
commit
e5240bcc8e
15
src/plugins/AutoScroll/AutoScroll.pro
Normal file
15
src/plugins/AutoScroll/AutoScroll.pro
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
TARGET = $$qtLibraryTarget(AutoScroll)
|
||||||
|
# OS/2 allows only 8 chars in TARGET
|
||||||
|
os2: TARGET = AutoScrl
|
||||||
|
|
||||||
|
SOURCES += autoscrollplugin.cpp \
|
||||||
|
autoscroller.cpp \
|
||||||
|
framescroller.cpp
|
||||||
|
|
||||||
|
HEADERS += autoscrollplugin.h \
|
||||||
|
autoscroller.h \
|
||||||
|
framescroller.h
|
||||||
|
|
||||||
|
RESOURCES += autoscroll.qrc
|
||||||
|
|
||||||
|
include(../../plugins.pri)
|
4
src/plugins/AutoScroll/autoscroll.qrc
Normal file
4
src/plugins/AutoScroll/autoscroll.qrc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="/autoscroll">
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
179
src/plugins/AutoScroll/autoscroller.cpp
Normal file
179
src/plugins/AutoScroll/autoscroller.cpp
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* QupZilla - WebKit based browser
|
||||||
|
* Copyright (C) 2014 David Rosca <nowrep@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#include "autoscroller.h"
|
||||||
|
#include "framescroller.h"
|
||||||
|
#include "webview.h"
|
||||||
|
#include "webpage.h"
|
||||||
|
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QWebFrame>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
AutoScroller::AutoScroller(const QString &settings, QObject* parent)
|
||||||
|
: QObject(parent)
|
||||||
|
, m_view(0)
|
||||||
|
{
|
||||||
|
Q_UNUSED(settings)
|
||||||
|
|
||||||
|
m_indicator = new QLabel;
|
||||||
|
m_indicator->resize(30, 30);
|
||||||
|
m_indicator->setStyleSheet("QLabel{background-color: red;}");
|
||||||
|
m_indicator->installEventFilter(this);
|
||||||
|
|
||||||
|
m_frameScroller = new FrameScroller(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoScroller::mouseMove(QObject* obj, QMouseEvent* event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(obj)
|
||||||
|
|
||||||
|
if (m_indicator->isVisible()) {
|
||||||
|
QRect rect = indicatorGlobalRect();
|
||||||
|
int xlength = 0;
|
||||||
|
int ylength = 0;
|
||||||
|
|
||||||
|
if (rect.left() > event->globalPos().x()) {
|
||||||
|
xlength = event->globalPos().x() - rect.left();
|
||||||
|
}
|
||||||
|
else if (rect.right() < event->globalPos().x()) {
|
||||||
|
xlength = event->globalPos().x() - rect.right();
|
||||||
|
}
|
||||||
|
if (rect.top() > event->globalPos().y()) {
|
||||||
|
ylength = event->globalPos().y() - rect.top();
|
||||||
|
}
|
||||||
|
else if (rect.bottom() < event->globalPos().y()) {
|
||||||
|
ylength = event->globalPos().y() - rect.bottom();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_frameScroller->startScrolling(xlength, ylength);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoScroller::mousePress(QObject* obj, QMouseEvent* event)
|
||||||
|
{
|
||||||
|
bool middleButton = event->buttons() == Qt::MiddleButton;
|
||||||
|
WebView* view = qobject_cast<WebView*>(obj);
|
||||||
|
Q_ASSERT(view);
|
||||||
|
|
||||||
|
// Start?
|
||||||
|
if (m_view != view && middleButton) {
|
||||||
|
return showIndicator(view, event->pos());
|
||||||
|
}
|
||||||
|
else if (!m_indicator->isVisible() && middleButton) {
|
||||||
|
return showIndicator(view, event->pos());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop
|
||||||
|
if (m_indicator->isVisible()) {
|
||||||
|
stopScrolling();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoScroller::mouseRelease(QObject* obj, QMouseEvent* event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(obj)
|
||||||
|
|
||||||
|
if (m_indicator->isVisible()) {
|
||||||
|
if (!indicatorGlobalRect().contains(event->globalPos())) {
|
||||||
|
stopScrolling();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoScroller::eventFilter(QObject* obj, QEvent* event)
|
||||||
|
{
|
||||||
|
if (obj == m_indicator) {
|
||||||
|
switch (event->type()) {
|
||||||
|
case QEvent::Enter:
|
||||||
|
m_frameScroller->stopScrolling();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case QEvent::Wheel:
|
||||||
|
case QEvent::Hide:
|
||||||
|
case QEvent::MouseButtonPress:
|
||||||
|
stopScrolling();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoScroller::showIndicator(WebView* view, const QPoint &pos)
|
||||||
|
{
|
||||||
|
QWebFrame* frame = view->page()->frameAt(pos);
|
||||||
|
|
||||||
|
if (!frame) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QWebHitTestResult res = frame->hitTestContent(pos);
|
||||||
|
|
||||||
|
if (res.isContentEditable() || !res.linkUrl().isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool vertical = frame->scrollBarGeometry(Qt::Vertical).isValid();
|
||||||
|
bool horizontal = frame->scrollBarGeometry(Qt::Horizontal).isValid();
|
||||||
|
|
||||||
|
if (!vertical && !horizontal) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_view = view;
|
||||||
|
|
||||||
|
QPoint p;
|
||||||
|
p.setX(pos.x() - m_indicator->width() / 2);
|
||||||
|
p.setY(pos.y() - m_indicator->height() / 2);
|
||||||
|
|
||||||
|
m_indicator->setParent(view->parentWidget());
|
||||||
|
m_indicator->move(p);
|
||||||
|
m_indicator->show();
|
||||||
|
|
||||||
|
m_frameScroller->setFrame(frame);
|
||||||
|
|
||||||
|
m_view->grabMouse();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoScroller::stopScrolling()
|
||||||
|
{
|
||||||
|
m_view->releaseMouse();
|
||||||
|
|
||||||
|
m_indicator->hide();
|
||||||
|
m_indicator->setParent(0);
|
||||||
|
m_frameScroller->stopScrolling();
|
||||||
|
}
|
||||||
|
|
||||||
|
QRect AutoScroller::indicatorGlobalRect() const
|
||||||
|
{
|
||||||
|
QPoint pos = m_indicator->parentWidget()->mapToGlobal(m_indicator->geometry().topLeft());
|
||||||
|
return QRect(pos.x(), pos.y(), m_indicator->width(), m_indicator->height());
|
||||||
|
}
|
54
src/plugins/AutoScroll/autoscroller.h
Normal file
54
src/plugins/AutoScroll/autoscroller.h
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* QupZilla - WebKit based browser
|
||||||
|
* Copyright (C) 2014 David Rosca <nowrep@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#ifndef AUTOSCROLLER_H
|
||||||
|
#define AUTOSCROLLER_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QPoint>
|
||||||
|
|
||||||
|
class QMouseEvent;
|
||||||
|
class QLabel;
|
||||||
|
class QRect;
|
||||||
|
|
||||||
|
class WebView;
|
||||||
|
class FrameScroller;
|
||||||
|
|
||||||
|
class AutoScroller : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit AutoScroller(const QString &settings, QObject* parent = 0);
|
||||||
|
|
||||||
|
bool mouseMove(QObject* obj, QMouseEvent* event);
|
||||||
|
bool mousePress(QObject* obj, QMouseEvent* event);
|
||||||
|
bool mouseRelease(QObject* obj, QMouseEvent* event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool eventFilter(QObject* obj, QEvent* event);
|
||||||
|
|
||||||
|
bool showIndicator(WebView* view, const QPoint &pos);
|
||||||
|
void stopScrolling();
|
||||||
|
|
||||||
|
QRect indicatorGlobalRect() const;
|
||||||
|
|
||||||
|
WebView* m_view;
|
||||||
|
QLabel* m_indicator;
|
||||||
|
FrameScroller* m_frameScroller;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // AUTOSCROLLER_H
|
103
src/plugins/AutoScroll/autoscrollplugin.cpp
Normal file
103
src/plugins/AutoScroll/autoscrollplugin.cpp
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* QupZilla - WebKit based browser
|
||||||
|
* Copyright (C) 2014 David Rosca <nowrep@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#include "autoscrollplugin.h"
|
||||||
|
#include "autoscroller.h"
|
||||||
|
#include "qupzilla.h"
|
||||||
|
#include "pluginproxy.h"
|
||||||
|
#include "mainapplication.h"
|
||||||
|
|
||||||
|
#include <QTranslator>
|
||||||
|
|
||||||
|
AutoScrollPlugin::AutoScrollPlugin()
|
||||||
|
: QObject()
|
||||||
|
, m_scroller(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PluginSpec AutoScrollPlugin::pluginSpec()
|
||||||
|
{
|
||||||
|
PluginSpec spec;
|
||||||
|
spec.name = "AutoScroll";
|
||||||
|
spec.info = "AutoScroll plugin";
|
||||||
|
spec.description = "Provides support for autoscroll with middle mouse button";
|
||||||
|
spec.version = "0.1.0";
|
||||||
|
spec.author = "David Rosca <nowrep@gmail.com>";
|
||||||
|
spec.icon = QPixmap(":/autoscroll/data/icon.png");
|
||||||
|
spec.hasSettings = false;
|
||||||
|
|
||||||
|
return spec;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoScrollPlugin::init(InitState state, const QString &settingsPath)
|
||||||
|
{
|
||||||
|
Q_UNUSED(state)
|
||||||
|
|
||||||
|
m_scroller = new AutoScroller(settingsPath, this);
|
||||||
|
|
||||||
|
QZ_REGISTER_EVENT_HANDLER(PluginProxy::MouseMoveHandler);
|
||||||
|
QZ_REGISTER_EVENT_HANDLER(PluginProxy::MousePressHandler);
|
||||||
|
QZ_REGISTER_EVENT_HANDLER(PluginProxy::MouseReleaseHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoScrollPlugin::unload()
|
||||||
|
{
|
||||||
|
m_scroller->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoScrollPlugin::testPlugin()
|
||||||
|
{
|
||||||
|
return (QupZilla::VERSION == QLatin1String("1.7.0"));
|
||||||
|
}
|
||||||
|
|
||||||
|
QTranslator* AutoScrollPlugin::getTranslator(const QString &locale)
|
||||||
|
{
|
||||||
|
QTranslator* translator = new QTranslator(this);
|
||||||
|
translator->load(locale, ":/autoscroll/locale/");
|
||||||
|
return translator;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoScrollPlugin::mouseMove(const Qz::ObjectName &type, QObject* obj, QMouseEvent* event)
|
||||||
|
{
|
||||||
|
if (type == Qz::ON_WebView) {
|
||||||
|
return m_scroller->mouseMove(obj, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoScrollPlugin::mousePress(const Qz::ObjectName &type, QObject* obj, QMouseEvent* event)
|
||||||
|
{
|
||||||
|
if (type == Qz::ON_WebView) {
|
||||||
|
return m_scroller->mousePress(obj, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoScrollPlugin::mouseRelease(const Qz::ObjectName &type, QObject* obj, QMouseEvent* event)
|
||||||
|
{
|
||||||
|
if (type == Qz::ON_WebView) {
|
||||||
|
return m_scroller->mouseRelease(obj, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if QT_VERSION < 0x050000
|
||||||
|
Q_EXPORT_PLUGIN2(AutoScroll, AutoScrollPlugin)
|
||||||
|
#endif
|
52
src/plugins/AutoScroll/autoscrollplugin.h
Normal file
52
src/plugins/AutoScroll/autoscrollplugin.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* QupZilla - WebKit based browser
|
||||||
|
* Copyright (C) 2014 David Rosca <nowrep@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#ifndef AUTOSCROLLPLUGIN_H
|
||||||
|
#define AUTOSCROLLPLUGIN_H
|
||||||
|
|
||||||
|
#include "plugininterface.h"
|
||||||
|
|
||||||
|
class AutoScroller;
|
||||||
|
|
||||||
|
class AutoScrollPlugin : public QObject, public PluginInterface
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_INTERFACES(PluginInterface)
|
||||||
|
|
||||||
|
#if QT_VERSION >= 0x050000
|
||||||
|
Q_PLUGIN_METADATA(IID "QupZilla.Browser.plugin.TestPlugin")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AutoScrollPlugin();
|
||||||
|
PluginSpec pluginSpec();
|
||||||
|
|
||||||
|
void init(InitState state, const QString &settingsPath);
|
||||||
|
void unload();
|
||||||
|
bool testPlugin();
|
||||||
|
|
||||||
|
QTranslator* getTranslator(const QString &locale);
|
||||||
|
|
||||||
|
bool mouseMove(const Qz::ObjectName &type, QObject* obj, QMouseEvent* event);
|
||||||
|
bool mousePress(const Qz::ObjectName &type, QObject* obj, QMouseEvent* event);
|
||||||
|
bool mouseRelease(const Qz::ObjectName &type, QObject* obj, QMouseEvent* event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
AutoScroller* m_scroller;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TESTPLUGIN_H
|
63
src/plugins/AutoScroll/framescroller.cpp
Normal file
63
src/plugins/AutoScroll/framescroller.cpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* QupZilla - WebKit based browser
|
||||||
|
* Copyright (C) 2014 David Rosca <nowrep@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#include "framescroller.h"
|
||||||
|
|
||||||
|
#include <QTimer>
|
||||||
|
#include <QWebFrame>
|
||||||
|
#include <QtCore/qmath.h>
|
||||||
|
|
||||||
|
FrameScroller::FrameScroller(QObject* parent)
|
||||||
|
: QObject(parent)
|
||||||
|
, m_frame(0)
|
||||||
|
, m_lengthX(0)
|
||||||
|
, m_lengthY(0)
|
||||||
|
{
|
||||||
|
m_timer = new QTimer(this);
|
||||||
|
m_timer->setInterval(20);
|
||||||
|
connect(m_timer, SIGNAL(timeout()), this, SLOT(scrollStep()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void FrameScroller::setFrame(QWebFrame* frame)
|
||||||
|
{
|
||||||
|
m_frame = frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FrameScroller::startScrolling(int lengthX, int lengthY)
|
||||||
|
{
|
||||||
|
Q_ASSERT(m_frame);
|
||||||
|
|
||||||
|
m_lengthX = lengthX;
|
||||||
|
m_lengthY = lengthY;
|
||||||
|
|
||||||
|
if (m_lengthX == 0 && m_lengthY == 0) {
|
||||||
|
m_timer->stop();
|
||||||
|
}
|
||||||
|
else if (!m_timer->isActive()) {
|
||||||
|
m_timer->start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FrameScroller::stopScrolling()
|
||||||
|
{
|
||||||
|
m_timer->stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FrameScroller::scrollStep()
|
||||||
|
{
|
||||||
|
m_frame->scroll(qCeil(m_lengthX / 8.0), qCeil(m_lengthY / 8.0));
|
||||||
|
}
|
49
src/plugins/AutoScroll/framescroller.h
Normal file
49
src/plugins/AutoScroll/framescroller.h
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* QupZilla - WebKit based browser
|
||||||
|
* Copyright (C) 2014 David Rosca <nowrep@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#ifndef FRAMESCROLLER_H
|
||||||
|
#define FRAMESCROLLER_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class QTimer;
|
||||||
|
class QWebFrame;
|
||||||
|
|
||||||
|
class FrameScroller : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit FrameScroller(QObject* parent = 0);
|
||||||
|
|
||||||
|
void setFrame(QWebFrame* frame);
|
||||||
|
|
||||||
|
void startScrolling(int lengthX, int lengthY);
|
||||||
|
void stopScrolling();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void scrollStep();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QWebFrame* m_frame;
|
||||||
|
QTimer* m_timer;
|
||||||
|
|
||||||
|
int m_lengthX;
|
||||||
|
int m_lengthY;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // FRAMESCROLLER_H
|
Loading…
Reference in New Issue
Block a user