45 #include "GWebPage.h" |
45 #include "GWebPage.h" |
46 #include "webpagecontroller.h" |
46 #include "webpagecontroller.h" |
47 //#include "ViewStack.h" |
47 //#include "ViewStack.h" |
48 #include "HistoryManager.h" |
48 #include "HistoryManager.h" |
49 #include "bookmarkscontroller.h" |
49 #include "bookmarkscontroller.h" |
|
50 #ifdef QT_GEOLOCATION |
|
51 #include "geolocationManager.h" |
|
52 #endif // QT_GEOLOCATION |
50 #include "ScriptObjects.h" |
53 #include "ScriptObjects.h" |
51 #include "LocaleDelegate.h" |
54 #include "LocaleDelegate.h" |
52 #include "DeviceDelegate.h" |
55 #include "DeviceDelegate.h" |
53 #include "NetworkDelegate.h" |
56 #include "NetworkDelegate.h" |
54 #include "ObjectCharm.h" |
57 #include "ObjectCharm.h" |
55 #include "bedrockprovisioning.h" |
58 #include "bedrockprovisioning.h" |
56 #include "Utilities.h" |
59 #include "Utilities.h" |
57 #include "PopupWebChromeItem.h" |
60 #include "PopupWebChromeItem.h" |
|
61 #include "UrlSearchSnippet.h" |
58 #ifdef QT_MOBILITY_SYSINFO |
62 #ifdef QT_MOBILITY_SYSINFO |
59 #include "SystemDeviceImpl.h" |
63 #include "SystemDeviceImpl.h" |
60 #include "SystemNetworkImpl.h" |
64 #include "SystemNetworkImpl.h" |
61 #endif |
65 #endif |
62 |
66 |
78 ChromeWidget::ChromeWidget(QGraphicsItem * parent, Qt::WindowFlags wFlags) |
82 ChromeWidget::ChromeWidget(QGraphicsItem * parent, Qt::WindowFlags wFlags) |
79 : QObject(0), |
83 : QObject(0), |
80 m_renderer(0), |
84 m_renderer(0), |
81 m_dom(0), |
85 m_dom(0), |
82 m_viewController(new ViewController()), |
86 m_viewController(new ViewController()), |
|
87 m_app(0), |
83 m_jsObject(new ChromeWidgetJSObject(0, this)), |
88 m_jsObject(new ChromeWidgetJSObject(0, this)), |
84 m_localeDelegate(new LocaleDelegate(this)), |
89 m_localeDelegate(new LocaleDelegate(this)), |
85 m_downloads(new Downloads()) |
90 m_downloads(new Downloads()) |
86 { |
91 { |
87 m_layout = new ChromeLayout(parent, wFlags); |
92 m_layout = new ChromeLayout(parent, wFlags); |
104 m_page = static_cast<QWebPage *>(new GVA::WebPageWrapper(this, "Chrome Javascript error")); |
109 m_page = static_cast<QWebPage *>(new GVA::WebPageWrapper(this, "Chrome Javascript error")); |
105 m_page->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); |
110 m_page->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); |
106 m_page->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); |
111 m_page->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); |
107 #endif |
112 #endif |
108 m_viewController->setObjectName("views"); |
113 m_viewController->setObjectName("views"); |
109 |
114 connect(m_viewController, SIGNAL(currentViewChanged(ControllableViewBase *)), this, SLOT(onCurrentViewChanged(ControllableViewBase *))); |
110 connect(m_viewController, SIGNAL(currentViewChanged()), this, SLOT(onCurrentViewChanged())); |
115 |
111 #ifndef __gva_no_chrome__ |
116 #ifndef __gva_no_chrome__ |
112 |
117 |
113 m_jsObject->setObjectName("chrome"); |
118 m_jsObject->setObjectName("chrome"); |
114 |
119 |
115 // Pass some signals from this object to the Javascript object. |
120 // Pass some signals from this object to the Javascript object. |
116 QObject::connect(this, SIGNAL(chromeComplete()), m_jsObject, SIGNAL(chromeComplete())); |
121 QObject::connect(this, SIGNAL(chromeComplete()), m_jsObject, SIGNAL(chromeComplete())); |
|
122 #ifdef Q_WS_MAEMO_5 |
|
123 QObject::connect(this, SIGNAL(chromeActivated()), m_jsObject, SIGNAL(chromeActivated())); |
|
124 #endif |
117 QObject::connect(this, SIGNAL(aspectChanged(int)), m_jsObject, SIGNAL(aspectChanged(int))); |
125 QObject::connect(this, SIGNAL(aspectChanged(int)), m_jsObject, SIGNAL(aspectChanged(int))); |
118 QObject::connect(this, SIGNAL(prepareForGeometryChange()), m_jsObject, SIGNAL(prepareForGeometryChange())); |
126 QObject::connect(this, SIGNAL(prepareForGeometryChange()), m_jsObject, SIGNAL(prepareForGeometryChange())); |
119 QObject::connect(this, SIGNAL(symbianCarriageReturn()), m_jsObject, SIGNAL(symbianCarriageReturn())); |
127 QObject::connect(this, SIGNAL(symbianCarriageReturn()), m_jsObject, SIGNAL(symbianCarriageReturn())); |
120 QObject::connect(this, SIGNAL(popupShown(const QString &)), m_jsObject, SIGNAL(popupShown(const QString &))); |
128 QObject::connect(this, SIGNAL(popupShown(const QString &)), m_jsObject, SIGNAL(popupShown(const QString &))); |
121 QObject::connect(this, SIGNAL(popupHidden(const QString &)), m_jsObject, SIGNAL(popupHidden(const QString &))); |
129 QObject::connect(this, SIGNAL(popupHidden(const QString &)), m_jsObject, SIGNAL(popupHidden(const QString &))); |
196 |
203 |
197 void ChromeWidget::onAspectChanged(int aspect) |
204 void ChromeWidget::onAspectChanged(int aspect) |
198 { |
205 { |
199 QString mode = (aspect == landscape ? "Landscape" : "Portrait"); |
206 QString mode = (aspect == landscape ? "Landscape" : "Portrait"); |
200 ControllableViewBase* cview = m_viewController->currentView(); |
207 ControllableViewBase* cview = m_viewController->currentView(); |
201 if (cview) |
208 |
202 cview->displayModeChanged(mode); |
209 if (cview){ |
|
210 //The size is the viewport size without the title/url bar widget height. |
|
211 // This is currently used only by Windows View as it needs to use this size |
|
212 // to position the thumbnails but need the viewport size to generate |
|
213 // the new thumbnails |
|
214 cview->displayModeChanged(mode, viewSize()); |
|
215 } |
203 emit aspectChanged(aspect); |
216 emit aspectChanged(aspect); |
204 } |
217 } |
205 |
218 |
206 void ChromeWidget::updateChromeLayout() { |
219 void ChromeWidget::updateChromeLayout() { |
207 m_renderer->updateChromeLayout(); |
220 m_renderer->updateChromeLayout(); |
276 |
289 |
277 void ChromeWidget::showView(const QString &name) { |
290 void ChromeWidget::showView(const QString &name) { |
278 m_viewController->showView(name); |
291 m_viewController->showView(name); |
279 } |
292 } |
280 |
293 |
281 void ChromeWidget::onCurrentViewChanged() { |
294 void ChromeWidget::onCurrentViewChanged(ControllableViewBase *newView) { |
282 m_layout->addView(m_viewController->currentView()); |
295 m_layout->addView(m_viewController->currentView()); |
283 } |
296 } |
284 |
297 |
285 // Clean up all existing snippets; |
298 // Clean up all existing snippets; |
286 |
299 |
287 void ChromeWidget::clearChrome() |
300 void ChromeWidget::clearChrome() |
288 { |
301 { |
333 addJSObjectToPage(m_app, page); |
346 addJSObjectToPage(m_app, page); |
334 addJSObjectToPage(m_viewController, page); |
347 addJSObjectToPage(m_viewController, page); |
335 addJSObjectToPage(WebPageController::getSingleton(), page); |
348 addJSObjectToPage(WebPageController::getSingleton(), page); |
336 addJSObjectToPage(BookmarksController::getSingleton(), page); |
349 addJSObjectToPage(BookmarksController::getSingleton(), page); |
337 addJSObjectToPage(WRT::HistoryManager::getSingleton(), page); |
350 addJSObjectToPage(WRT::HistoryManager::getSingleton(), page); |
|
351 #ifdef QT_GEOLOCATION |
|
352 addJSObjectToPage(GeolocationManager::getSingleton(), page); |
|
353 #endif // QT_GEOLOCATION |
338 addJSObjectToPage(ViewStack::getSingleton(), page); |
354 addJSObjectToPage(ViewStack::getSingleton(), page); |
339 addJSObjectToPage(m_localeDelegate, page); |
355 addJSObjectToPage(m_localeDelegate, page); |
340 addJSObjectToPage(m_deviceDelegate, page); |
356 addJSObjectToPage(m_deviceDelegate, page); |
341 addJSObjectToPage(m_networkDelegate, page); |
357 addJSObjectToPage(m_networkDelegate, page); |
342 #ifdef QT_MOBILITY_SERVICE_FRAMEWORK |
358 #ifdef QT_MOBILITY_SERVICE_FRAMEWORK |
378 void ChromeWidget::adjustAnchorOffset(ChromeSnippet * snippet, qreal delta) |
394 void ChromeWidget::adjustAnchorOffset(ChromeSnippet * snippet, qreal delta) |
379 { |
395 { |
380 m_layout->adjustAnchorOffset(snippet, delta); |
396 m_layout->adjustAnchorOffset(snippet, delta); |
381 } |
397 } |
382 |
398 |
383 ChromeSnippet *ChromeWidget::getSnippet(const QString & docElementId, QGraphicsItem * parent) { |
399 ChromeSnippet *ChromeWidget::getSnippet(const QString & docElementId) { |
384 ChromeSnippet *result = m_snippets->getSnippet(docElementId); |
400 ChromeSnippet *result = m_snippets->getSnippet(docElementId); |
385 if (!result){ |
401 if (!result){ |
386 result = m_dom->getSnippet(docElementId, parent); |
402 result = m_dom->getSnippet(docElementId); |
387 if (result) { |
403 if (result) { |
388 result->setParent(m_snippets); // Exports to "Snippets" JS object |
404 result->setParent(m_snippets); // Exports to "Snippets" JS object |
389 addSnippet(result, docElementId); |
405 addSnippet(result, docElementId); |
390 } |
406 } |
391 else{ |
407 else{ |
409 m_page->mainFrame()->addToJavaScriptWindowObject(object->objectName(), object); |
425 m_page->mainFrame()->addToJavaScriptWindowObject(object->objectName(), object); |
410 } |
426 } |
411 |
427 |
412 void ChromeWidget::addJSObjectToPage(QObject *object, QWebPage *page) |
428 void ChromeWidget::addJSObjectToPage(QObject *object, QWebPage *page) |
413 { |
429 { |
414 page->mainFrame()->addToJavaScriptWindowObject(object->objectName(), object); |
430 if (object && page) |
|
431 page->mainFrame()->addToJavaScriptWindowObject(object->objectName(), object); |
415 } |
432 } |
416 |
433 |
417 QObjectList ChromeWidget::getSnippets() { |
434 QObjectList ChromeWidget::getSnippets() { |
418 return m_snippets->getList(); |
435 return m_snippets->getList(); |
419 } |
436 } |
456 void ChromeWidget::emitPopupHidden(const QString &popupId) |
473 void ChromeWidget::emitPopupHidden(const QString &popupId) |
457 { |
474 { |
458 emit popupHidden(popupId); |
475 emit popupHidden(popupId); |
459 } |
476 } |
460 |
477 |
|
478 // Activate is called by the WindowsView when a new window is created. |
|
479 #ifdef Q_WS_MAEMO_5 |
|
480 void ChromeWidget::activate() { |
|
481 emit chromeActivated(); |
|
482 } |
|
483 #endif |
|
484 |
|
485 void ChromeWidget::windowStateChange(Qt::WindowStates state) { |
|
486 emit windowStateChanged(state); |
|
487 } |
|
488 |
|
489 QSize ChromeWidget::viewSize() { |
|
490 return m_layout->viewPortSize(true); |
|
491 } |
461 |
492 |
462 void ChromeWidget::dump() { |
493 void ChromeWidget::dump() { |
463 qDebug() << "---------------------"; |
494 qDebug() << "---------------------"; |
464 qDebug() << "ChromeWidget::dump"; |
495 qDebug() << "ChromeWidget::dump"; |
465 m_snippets->dump(); |
496 m_snippets->dump(); |