From cfd4f8d1c519bb49bf721350165200c9a31dfa3c Mon Sep 17 00:00:00 2001 From: Aleksei Kanash Date: Tue, 7 Aug 2012 11:30:58 +0300 Subject: [PATCH] Fixed behavior of freezing wodgets. Improved mechansm of determination status of widgets - loading or error, or all is ok. Messages doesn't hides widget content. --- src/board/UBBoardController.cpp | 4 ++-- src/domain/UBAbstractWidget.cpp | 15 ++++++++------- src/domain/UBGraphicsItemUndoCommand.cpp | 9 ++++----- src/domain/UBGraphicsScene.cpp | 1 + src/domain/UBW3CWidget.cpp | 8 ++++++-- src/domain/UBW3CWidget.h | 2 ++ 6 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index db95ad67..da904560 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -2233,8 +2233,8 @@ void UBBoardController::freezeW3CWidget(QGraphicsItem *item, bool freeze) return; if (freeze) { - item_casted->widgetWebView()->page()->mainFrame()->setContent(UBW3CWidget::freezedWidgetPage().toAscii()); - } else + item_casted->widgetWebView()->load(QUrl(item_casted->w3cWidget()->freezedWidgetFilePath())); + }else item_casted->widgetWebView()->loadMainHtml(); } } diff --git a/src/domain/UBAbstractWidget.cpp b/src/domain/UBAbstractWidget.cpp index 8485f76b..b0053b54 100644 --- a/src/domain/UBAbstractWidget.cpp +++ b/src/domain/UBAbstractWidget.cpp @@ -73,7 +73,7 @@ UBAbstractWidget::UBAbstractWidget(const QUrl& pWidgetUrl, QWidget *parent) connect(QWebView::page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared())); connect(QWebView::page(), SIGNAL(geometryChangeRequested(const QRect&)), this, SIGNAL(geometryChangeRequested(const QRect&))); - connect(QWebView::page(), SIGNAL(loadFinished(bool)), this, SLOT(mainFrameLoadFinished (bool))); + connect(this, SIGNAL(loadFinished(bool)), this, SLOT(mainFrameLoadFinished (bool))); setMouseTracking(true); } @@ -121,6 +121,7 @@ UBAbstractWidget::~UBAbstractWidget() void UBAbstractWidget::loadMainHtml() { + mInitialLoadDone = false; QWebView::load(mMainHtmlUrl); } @@ -400,21 +401,21 @@ void UBAbstractWidget::paintEvent(QPaintEvent * event) QPainter p(this); p.drawPixmap(0, 0, mSnapshot); } - else if(mIsTakingSnapshot || (mInitialLoadDone && !mLoadIsErronous)) + else { QWebView::paintEvent(event); } - else + if (!mInitialLoadDone || mLoadIsErronous) { QPainter p(this); QString message = tr("Loading ..."); // this is the right way of doing but we receive two callback and the one return always that the // load as failed... to check -// if (mLoadIsErronous) -// message = tr("Cannot load content"); -// else -// message = tr("Loading ..."); + if (mInitialLoadDone && mLoadIsErronous) + message = tr("Cannot load content"); + else + message = tr("Loading ..."); p.setFont(QFont("Arial", 12)); diff --git a/src/domain/UBGraphicsItemUndoCommand.cpp b/src/domain/UBGraphicsItemUndoCommand.cpp index eada4e0d..8d4ebf52 100644 --- a/src/domain/UBGraphicsItemUndoCommand.cpp +++ b/src/domain/UBGraphicsItemUndoCommand.cpp @@ -54,13 +54,11 @@ UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, QG if (pRemovedItem) { mRemovedItems.insert(pRemovedItem); - UBApplication::boardController->freezeW3CWidget(pRemovedItem, true); } if (pAddedItem) { mAddedItems.insert(pAddedItem); - UBApplication::boardController->freezeW3CWidget(pAddedItem, false); } mFirstRedo = true; @@ -82,9 +80,10 @@ void UBGraphicsItemUndoCommand::undo() while (itAdded.hasNext()) { QGraphicsItem* item = itAdded.next(); + + UBApplication::boardController->freezeW3CWidget(item, true); item->setSelected(false); mScene->removeItem(item); - UBApplication::boardController->freezeW3CWidget(item, true); } QSetIterator itRemoved(mRemovedItems); @@ -132,12 +131,12 @@ void UBGraphicsItemUndoCommand::redo() QGraphicsItem* item = itAdded.next(); if (item) { + UBApplication::boardController->freezeW3CWidget(item, false); + if (UBItemLayerType::FixedBackground == item->data(UBGraphicsItemData::ItemLayerType)) mScene->setAsBackgroundObject(item); else mScene->addItem(item); - - UBApplication::boardController->freezeW3CWidget(item, false); } } diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index bfd97da3..25f94c03 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1717,6 +1717,7 @@ void UBGraphicsScene::removeItem(QGraphicsItem* item) { setModified(true); UBCoreGraphicsScene::removeItem(item); + UBApplication::boardController->freezeW3CWidget(item, true); if (!mTools.contains(item)) --mItemCount; diff --git a/src/domain/UBW3CWidget.cpp b/src/domain/UBW3CWidget.cpp index 643bc621..594b2fac 100644 --- a/src/domain/UBW3CWidget.cpp +++ b/src/domain/UBW3CWidget.cpp @@ -425,8 +425,7 @@ QString UBW3CWidget::freezedWidgetPage() static QString defaultcontent; if (defaultcontent.isNull()) { - QString etcPath = UBPlatformUtils::applicationResourcesDirectory() + "/etc/"; - QString freezedWidgetDefaultContentFilePath = etcPath + "freezedWidgetWrapper.html"; + QString freezedWidgetDefaultContentFilePath = freezedWidgetFilePath(); QFile wrapperFile(freezedWidgetDefaultContentFilePath); if (!wrapperFile.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "can't open wrapper file " + freezedWidgetDefaultContentFilePath; @@ -445,6 +444,11 @@ QString UBW3CWidget::freezedWidgetPage() return defaultcontent; } +QString UBW3CWidget::freezedWidgetFilePath() +{ + return UBPlatformUtils::applicationResourcesDirectory() + "/etc/" + "freezedWidgetWrapper.html"; +} + void UBW3CWidget::loadNPAPIWrappersTemplates() { if (!sTemplateLoaded) diff --git a/src/domain/UBW3CWidget.h b/src/domain/UBW3CWidget.h index 1884c826..081fe612 100644 --- a/src/domain/UBW3CWidget.h +++ b/src/domain/UBW3CWidget.h @@ -50,6 +50,8 @@ class UBW3CWidget : public UBAbstractWidget static QString freezedWidgetPage(); + static QString freezedWidgetFilePath(); + static bool hasNPAPIWrapper(const QString& pMimeType); class PreferenceValue