1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
* UBAbstractWidget.h
*
* Created on: 11 Feb. 2009
* Author: Luc
*/
#ifndef UBABSTRACTWIDGET_H_
#define UBABSTRACTWIDGET_H_
#include <QtGui>
#include <QtWebKit>
#include "web/UBRoutedMouseEventWebView.h"
struct UBWidgetType
{
enum Enum
{
W3C = 0, Apple, Other
};
};
class UBAbstractWidget : public UBRoutedMouseEventWebView
{
Q_OBJECT;
public:
UBAbstractWidget(const QUrl& pWidgetUrl, QWidget *parent = 0);
virtual ~UBAbstractWidget();
QUrl mainHtml()
{
return mMainHtmlUrl;
}
QUrl widgetUrl()
{
return mWidgetUrl;
}
QString mainHtmlFileName()
{
return mMainHtmlFileName;
}
bool hasEmbededObjects();
bool hasEmbededFlash();
void resize(qreal width, qreal height);
QSize nominalSize() const
{
return mNominalSize;
}
bool canBeContent() const
{
return mCanBeContent;
}
bool canBeTool() const
{
return mCanBeTool;
}
bool hasLoadedSuccessfully() const
{
return (mInitialLoadDone && !mLoadIsErronous);
}
bool freezable() { return mIsFreezable;}
bool resizable() { return mIsResizable;}
static QString iconFilePath(const QUrl& pUrl);
static QString widgetName(const QUrl& pUrl);
static int widgetType(const QUrl& pUrl);
bool isFrozen(){ return mIsFrozen;}
QPixmap snapshot(){return mSnapshot;}
void setSnapshot(const QPixmap& pix);
QPixmap takeSnapshot();
public slots:
void freeze();
void unFreeze();
signals:
void geometryChangeRequested(const QRect & geom);
protected:
bool mMouseIsPressed;
bool mFirstReleaseAfterMove;
virtual bool event(QEvent *e);
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseMoveEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
virtual QWebView * createWindow(QWebPage::WebWindowType type);
QUrl mMainHtmlUrl;
QString mMainHtmlFileName;
QUrl mWidgetUrl;
QSize mNominalSize;
bool mIsResizable;
bool mInitialLoadDone;
bool mLoadIsErronous;
bool mIsFreezable;
bool mCanBeContent;
bool mCanBeTool;
virtual void injectInlineJavaScript();
virtual void paintEvent(QPaintEvent * event);
protected slots:
void mainFrameLoadFinished(bool ok);
private:
static QStringList sInlineJavaScripts;
static bool sInlineJavaScriptLoaded;
bool mIsFrozen;
QPixmap mSnapshot;
bool mIsTakingSnapshot;
private slots:
void javaScriptWindowObjectCleared();
};
#endif /* UBABSTRACTWIDGET_H_ */