/* * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) * Copyright (C) 2010 University of Szeged * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef MiniBrowserApplication_h #define MiniBrowserApplication_h #include #include #include #include #include #include #include #include class BrowserWindow; class WindowOptions : public QObject { Q_OBJECT Q_PROPERTY(bool printLoadedUrls READ printLoadedUrls) Q_PROPERTY(bool startMaximized READ startMaximized) Q_PROPERTY(bool touchMockingEnabled READ touchMockingEnabled WRITE setTouchMockingEnabled NOTIFY touchMockingEnabledChanged) public: WindowOptions(QObject* parent = 0) : QObject(parent) , m_printLoadedUrls(false) , m_startMaximized(false) , m_touchMockingEnabled(true) , m_windowSize(QSize(980, 735)) { } void setPrintLoadedUrls(bool enabled) { m_printLoadedUrls = enabled; } bool printLoadedUrls() const { return m_printLoadedUrls; } void setStartMaximized(bool enabled) { m_startMaximized = enabled; } bool startMaximized() const { return m_startMaximized; } void setStartFullScreen(bool enabled) { m_startFullScreen = enabled; } bool startFullScreen() const { return m_startFullScreen; } void setRequestedWindowSize(const QSize& size) { m_windowSize = size; } QSize requestedWindowSize() const { return m_windowSize; } void setUserAgent(const QString& userAgent) { m_userAgent = userAgent; } QString userAgent() const { return m_userAgent; } bool touchMockingEnabled() const { return m_touchMockingEnabled; } void setTouchMockingEnabled(bool enabled) { if (enabled != m_touchMockingEnabled) { m_touchMockingEnabled = enabled; emit touchMockingEnabledChanged(); } } Q_SIGNALS: void touchMockingEnabledChanged(); private: bool m_printLoadedUrls; bool m_startMaximized; bool m_startFullScreen; bool m_touchMockingEnabled; QSize m_windowSize; QString m_userAgent; }; class MiniBrowserApplication : public QGuiApplication { Q_OBJECT public: MiniBrowserApplication(int& argc, char** argv); QStringList urls() const { return m_urls; } bool isRobotized() const { return m_isRobotized; } int robotTimeout() const { return m_robotTimeoutSeconds; } int robotExtraTime() const { return m_robotExtraTimeSeconds; } WindowOptions* windowOptions() { return &m_windowOptions; } virtual bool notify(QObject*, QEvent*); private: void updateTouchPoint(const QMouseEvent*, QTouchEvent::TouchPoint, Qt::MouseButton); bool sendTouchEvent(BrowserWindow*, QEvent::Type, ulong timestamp); void handleUserOptions(); private: bool m_realTouchEventReceived; int m_pendingFakeTouchEventCount; bool m_isRobotized; int m_robotTimeoutSeconds; int m_robotExtraTimeSeconds; QStringList m_urls; QHash m_touchPoints; QSet m_heldTouchPoints; WindowOptions m_windowOptions; bool m_holdingControl; }; QML_DECLARE_TYPE(WindowOptions); #endif