ginebra2/GWebPage.h
author hgs
Fri, 06 Aug 2010 17:23:08 -0400
changeset 9 b39122337a00
parent 3 0954f5dd2cd0
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
3
hgs
parents: 0
diff changeset
     4
*
hgs
parents: 0
diff changeset
     5
* This program is free software: you can redistribute it and/or modify
hgs
parents: 0
diff changeset
     6
* it under the terms of the GNU Lesser General Public License as published by
hgs
parents: 0
diff changeset
     7
* the Free Software Foundation, version 2.1 of the License.
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
3
hgs
parents: 0
diff changeset
     9
* This program is distributed in the hope that it will be useful,
hgs
parents: 0
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
hgs
parents: 0
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
hgs
parents: 0
diff changeset
    12
* GNU Lesser General Public License for more details.
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
3
hgs
parents: 0
diff changeset
    14
* You should have received a copy of the GNU Lesser General Public License
hgs
parents: 0
diff changeset
    15
* along with this program.  If not,
hgs
parents: 0
diff changeset
    16
* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
*
3
hgs
parents: 0
diff changeset
    18
* Description:
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
*
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
*/
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#ifndef __GINEBRA_GWEBPAGE_H__
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#define __GINEBRA_GWEBPAGE_H__
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <QDebug>
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include <QWebPage>
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include <QWebFrame>
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include "ChromeWidget.h"
3
hgs
parents: 0
diff changeset
    29
#include "WebViewEventContext.h"
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
namespace GVA {
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
3
hgs
parents: 0
diff changeset
    33
// ------------------------------
hgs
parents: 0
diff changeset
    34
// Simple wrapper class for QWebPage to allow interception of javascript errors.
hgs
parents: 0
diff changeset
    35
class WebPageWrapper : public QWebPage {
hgs
parents: 0
diff changeset
    36
public:
hgs
parents: 0
diff changeset
    37
    WebPageWrapper(QObject *parent, const QString &prefix);
hgs
parents: 0
diff changeset
    38
hgs
parents: 0
diff changeset
    39
    // Called when javascript errors are hit in the chrome page.
hgs
parents: 0
diff changeset
    40
    virtual void javaScriptConsoleMessage(const QString & message, int lineNumber, const QString & sourceID);
hgs
parents: 0
diff changeset
    41
hgs
parents: 0
diff changeset
    42
    QString m_prefix;
hgs
parents: 0
diff changeset
    43
};
hgs
parents: 0
diff changeset
    44
hgs
parents: 0
diff changeset
    45
// ------------------------------
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
3
hgs
parents: 0
diff changeset
    47
class GWebPage : public QObject {
hgs
parents: 0
diff changeset
    48
    Q_OBJECT
hgs
parents: 0
diff changeset
    49
public:
hgs
parents: 0
diff changeset
    50
    GWebPage(QWebPage *page) {
hgs
parents: 0
diff changeset
    51
        m_page = page;  // take ownership
hgs
parents: 0
diff changeset
    52
    }
hgs
parents: 0
diff changeset
    53
hgs
parents: 0
diff changeset
    54
    virtual ~GWebPage() {
hgs
parents: 0
diff changeset
    55
        delete m_page;
hgs
parents: 0
diff changeset
    56
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
3
hgs
parents: 0
diff changeset
    58
    Q_PROPERTY(QString name READ objectName)  // JS API
hgs
parents: 0
diff changeset
    59
    Q_PROPERTY(QString title READ getTitle)  // JS API
hgs
parents: 0
diff changeset
    60
    QString getTitle() {
hgs
parents: 0
diff changeset
    61
        return m_page->mainFrame()->title();
hgs
parents: 0
diff changeset
    62
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
3
hgs
parents: 0
diff changeset
    64
    QWebPage *page() { return m_page; }
hgs
parents: 0
diff changeset
    65
    operator QWebPage *() { return m_page; }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
3
hgs
parents: 0
diff changeset
    67
    void dump() {
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
        qDebug() << "GWebPage::dump: " << this;
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
        qDebug() << "   page=" << (m_page ? m_page : 0);
3
hgs
parents: 0
diff changeset
    70
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
3
hgs
parents: 0
diff changeset
    72
signals:
hgs
parents: 0
diff changeset
    73
    /// Triggered by a QContextEvent such as a long-press or right mouse button click.
hgs
parents: 0
diff changeset
    74
    void contextEvent(::WebViewEventContext *context);
hgs
parents: 0
diff changeset
    75
#ifdef BEDROCK_TILED_BACKING_STORE
hgs
parents: 0
diff changeset
    76
public slots:
hgs
parents: 0
diff changeset
    77
#else
hgs
parents: 0
diff changeset
    78
protected slots:
hgs
parents: 0
diff changeset
    79
#endif
hgs
parents: 0
diff changeset
    80
    void onContextEvent(::WebViewEventContext *context) { emit contextEvent(context); }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
3
hgs
parents: 0
diff changeset
    82
protected:
hgs
parents: 0
diff changeset
    83
    QWebPage *m_page;  // owned
hgs
parents: 0
diff changeset
    84
hgs
parents: 0
diff changeset
    85
    friend class GWebContentViewWidget;
hgs
parents: 0
diff changeset
    86
};
hgs
parents: 0
diff changeset
    87
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
}
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
#endif // __GINEBRA_GWEBPAGE_H__