diff --git a/src/adaptors/UBCFFSubsetAdaptor.cpp b/src/adaptors/UBCFFSubsetAdaptor.cpp index 3c462c91..bc43b758 100644 --- a/src/adaptors/UBCFFSubsetAdaptor.cpp +++ b/src/adaptors/UBCFFSubsetAdaptor.cpp @@ -31,7 +31,7 @@ #include "domain/UBGraphicsWidgetItem.h" #include "domain/UBGraphicsTextItem.h" #include "domain/UBGraphicsTextItemDelegate.h" -#include "domain/UBW3CWidget.h" +#include "domain/UBGraphicsWidgetItem.h" #include "frameworks/UBFileSystemUtils.h" @@ -776,7 +776,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &ele return false; } - QString flashUrl = UBW3CWidget::createNPAPIWrapperInDir(flashPath, tmpFlashDir, "application/x-shockwave-flash" + QString flashUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(flashPath, tmpFlashDir, "application/x-shockwave-flash" ,QSize(mCurrentSceneRect.width(), mCurrentSceneRect.height())); UBGraphicsWidgetItem *flashItem = mCurrentScene->addW3CWidget(QUrl::fromLocalFile(flashUrl)); flashItem->setSourceUrl(urlPath); diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 35e17863..84b155d9 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -27,7 +27,6 @@ #include "domain/UBGraphicsPDFItem.h" #include "domain/UBGraphicsTextItem.h" #include "domain/UBGraphicsTextItemDelegate.h" -#include "domain/UBAbstractWidget.h" #include "domain/UBGraphicsStroke.h" #include "domain/UBGraphicsStrokesGroup.h" #include "domain/UBGraphicsGroupContainerItem.h" diff --git a/src/api/UBWidgetUniboardAPI.cpp b/src/api/UBWidgetUniboardAPI.cpp index 14fc1d87..73ecbfae 100644 --- a/src/api/UBWidgetUniboardAPI.cpp +++ b/src/api/UBWidgetUniboardAPI.cpp @@ -30,7 +30,6 @@ #include "domain/UBGraphicsScene.h" #include "domain/UBGraphicsWidgetItem.h" -#include "domain/UBAbstractWidget.h" #include "adaptors/UBThumbnailAdaptor.h" diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 184ec2a1..30fcdcfb 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -49,7 +49,6 @@ #include "domain/UBGraphicsWidgetItem.h" #include "domain/UBGraphicsMediaItem.h" #include "domain/UBGraphicsPDFItem.h" -#include "domain/UBW3CWidget.h" #include "domain/UBGraphicsTextItem.h" #include "domain/UBPageSizeUndoCommand.h" #include "domain/UBGraphicsGroupContainerItem.h" @@ -1045,7 +1044,7 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString else size = mActiveScene->nominalSize() * .8; - QString widgetUrl = UBW3CWidget::createNPAPIWrapper(sUrl, mimeType, size); + QString widgetUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapper(sUrl, mimeType, size); if (widgetUrl.length() > 0) { @@ -1166,7 +1165,7 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString else size = mActiveScene->nominalSize() * .8; - QString widgetUrl = UBW3CWidget::createNPAPIWrapper(swfFile, "application/x-shockwave-flash", size); + QString widgetUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapper(swfFile, "application/x-shockwave-flash", size); if (widgetUrl.length() > 0) { @@ -2160,7 +2159,7 @@ void UBBoardController::freezeW3CWidget(QGraphicsItem *item, bool freeze) return; if (freeze) { - item_casted->page()->mainFrame()->setContent(UBW3CWidget::freezedWidgetPage().toAscii()); + item_casted->page()->mainFrame()->setContent(UBGraphicsW3CWidgetItem::freezedWidgetPage().toAscii()); } else item_casted->loadMainHtml(); } diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 0832888c..ace93bad 100644 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -48,7 +48,6 @@ #include "network/UBServerXMLHttpRequest.h" #include "domain/UBGraphicsScene.h" -#include "domain/UBAbstractWidget.h" #include "domain/UBGraphicsPixmapItem.h" #include "document/UBDocumentProxy.h" diff --git a/src/board/UBBoardPaletteManager.h b/src/board/UBBoardPaletteManager.h index c0113052..335b4bcd 100644 --- a/src/board/UBBoardPaletteManager.h +++ b/src/board/UBBoardPaletteManager.h @@ -18,8 +18,7 @@ #include #include - -#include "web/UBRoutedMouseEventWebView.h" + #include "gui/UBLeftPalette.h" #include "gui/UBRightPalette.h" #include "gui/UBPageNavigationWidget.h" diff --git a/src/board/UBBoardView.h b/src/board/UBBoardView.h index 0314b392..0df2dc6e 100644 --- a/src/board/UBBoardView.h +++ b/src/board/UBBoardView.h @@ -21,7 +21,6 @@ #include "domain/UBGraphicsDelegateFrame.h" class UBBoardController; -class UBAppleWidget; class UBGraphicsScene; class UBGraphicsWidgetItem; class UBRubberBand; diff --git a/src/board/UBFeaturesController.cpp b/src/board/UBFeaturesController.cpp index c45ebffd..26565bb9 100644 --- a/src/board/UBFeaturesController.cpp +++ b/src/board/UBFeaturesController.cpp @@ -11,7 +11,6 @@ #include "core/UBDownloadManager.h" -#include "domain/UBAbstractWidget.h" #include "domain/UBGraphicsScene.h" #include "domain/UBGraphicsSvgItem.h" #include "domain/UBGraphicsPixmapItem.h" @@ -326,7 +325,7 @@ QPixmap UBFeaturesController::getIcon(const QString &path, UBFeatureElementType } else if ( pFType == FEATURE_INTERACTIVE ) { - return QPixmap( UBAbstractWidget::iconFilePath( QUrl::fromLocalFile(path) ) ); + return QPixmap( UBGraphicsWidgetItem::iconFilePath( QUrl::fromLocalFile(path) ) ); } @@ -336,7 +335,7 @@ QPixmap UBFeaturesController::getIcon(const QString &path, UBFeatureElementType } if ( UBFileSystemUtils::mimeTypeFromFileName(path).contains("application") ) { - return QPixmap( UBAbstractWidget::iconFilePath( QUrl::fromLocalFile(path) ) ); + return QPixmap( UBGraphicsWidgetItem::iconFilePath( QUrl::fromLocalFile(path) ) ); } QPixmap thumb; diff --git a/src/board/UBLibraryController.cpp b/src/board/UBLibraryController.cpp index efc7e393..d9204ef0 100644 --- a/src/board/UBLibraryController.cpp +++ b/src/board/UBLibraryController.cpp @@ -24,7 +24,6 @@ #include "core/UBApplicationController.h" #include "core/UBDownloadManager.h" -#include "domain/UBAbstractWidget.h" #include "domain/UBGraphicsScene.h" #include "domain/UBGraphicsSvgItem.h" #include "domain/UBGraphicsPixmapItem.h" @@ -325,7 +324,7 @@ QImage UBLibraryController::thumbnailForFile(UBLibElement* pElement) return image; } if (pElement->type() == eUBLibElementType_InteractiveItem){ - QImage image = QImage(UBAbstractWidget::iconFilePath(pElement->path())); + QImage image = QImage(UBGraphicsWidgetItem::iconFilePath(pElement->path())); return image; } @@ -780,7 +779,7 @@ UBLibElement::UBLibElement(eUBLibElementType type, const QUrl &path, const QStri mThumbnail = QImage(":images/libpalette/folder.svg"); if (type == eUBLibElementType_InteractiveItem) - mThumbnail = QImage(UBAbstractWidget::iconFilePath(path)); + mThumbnail = QImage(UBGraphicsWidgetItem::iconFilePath(path)); if (type == eUBLibElementType_Item) mExtension = QFileInfo(path.toLocalFile()).completeSuffix(); diff --git a/src/core/UBApplicationController.cpp b/src/core/UBApplicationController.cpp index c9e241b9..fbb20af6 100644 --- a/src/core/UBApplicationController.cpp +++ b/src/core/UBApplicationController.cpp @@ -33,6 +33,8 @@ #include "document/UBDocumentProxy.h" #include "document/UBDocumentController.h" +#include "domain/UBGraphicsWidgetItem.h" + #include "desktop/UBDesktopPalette.h" #include "desktop/UBDesktopAnnotationController.h" @@ -44,7 +46,6 @@ #include "gui/UBTeacherGuideWidget.h" #include "domain/UBGraphicsPixmapItem.h" -#include "domain/UBW3CWidget.h" #include "podcast/UBPodcastController.h" @@ -318,7 +319,7 @@ void UBApplicationController::addCapturedEmbedCode(const QString& embedCode) int width = 300; int height = 150; - QString widgetPath = UBW3CWidget::createHtmlWrapperInDir(embedCode, userWidgetDir, + QString widgetPath = UBGraphicsW3CWidgetItem::createHtmlWrapperInDir(embedCode, userWidgetDir, QSize(width, height), UBStringUtils::toCanonicalUuid(QUuid::createUuid())); if (widgetPath.length() > 0) diff --git a/src/domain/UBAbstractWidget.cpp b/src/domain/UBAbstractWidget.cpp deleted file mode 100644 index 8485f76b..00000000 --- a/src/domain/UBAbstractWidget.cpp +++ /dev/null @@ -1,475 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "UBAbstractWidget.h" - -#include -#include - -#include "frameworks/UBFileSystemUtils.h" - -#include "core/UBApplicationController.h" -#include "core/UBApplication.h" -#include "core/UBSettings.h" - -#include "network/UBNetworkAccessManager.h" - -#include "web/UBWebPage.h" -#include "web/UBWebKitUtils.h" -#include "web/UBWebController.h" - -#include "core/memcheck.h" - -QStringList UBAbstractWidget::sInlineJavaScripts; -bool UBAbstractWidget::sInlineJavaScriptLoaded = false; - -UBAbstractWidget::UBAbstractWidget(const QUrl& pWidgetUrl, QWidget *parent) - : UBRoutedMouseEventWebView(parent) - , mWidgetUrl(pWidgetUrl) - , mIsResizable(false) - , mInitialLoadDone(false) - , mLoadIsErronous(false) - , mIsFreezable(true) - , mCanBeContent(0) - , mCanBeTool(0) - , mIsFrozen(false) - , mIsTakingSnapshot(false) -{ - setAcceptDrops(true); - setPage(new UBWebPage(this)); - QWebView::settings()->setAttribute(QWebSettings::JavaEnabled, true); - QWebView::settings()->setAttribute(QWebSettings::PluginsEnabled, true); - QWebView::settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true); - QWebView::settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true); - QWebView::settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true); - QWebView::settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true); - QWebView::settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true); - - QWebView::page()->setNetworkAccessManager(UBNetworkAccessManager::defaultAccessManager()); - - setAutoFillBackground(false); - - QPalette pagePalette = QWebView::page()->palette(); - pagePalette.setBrush(QPalette::Base, QBrush(Qt::transparent)); - pagePalette.setBrush(QPalette::Window, QBrush(Qt::transparent)); - QWebView::page()->setPalette(pagePalette); - - QPalette viewPalette = palette(); - pagePalette.setBrush(QPalette::Base, QBrush(Qt::transparent)); - viewPalette.setBrush(QPalette::Window, QBrush(Qt::transparent)); - setPalette(viewPalette); - - 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))); - - setMouseTracking(true); -} - -bool UBAbstractWidget::canBeContent() -{ - // if we under MAC OS - #if defined(Q_OS_MAC) - return mCanBeContent & UBAbstractWidget::type_MAC; - #endif - - // if we under UNIX OS - #if defined(Q_OS_UNIX) - return mCanBeContent & UBAbstractWidget::type_UNIX; - #endif - - // if we under WINDOWS OS - #if defined(Q_OS_WIN) - return mCanBeContent & UBAbstractWidget::type_WIN; - #endif -} - -bool UBAbstractWidget::canBeTool() -{ - // if we under MAC OS - #if defined(Q_OS_MAC) - return mCanBeTool & UBAbstractWidget::type_MAC; - #endif - - // if we under UNIX OS - #if defined(Q_OS_UNIX) - return mCanBeTool & UBAbstractWidget::type_UNIX; - #endif - - // if we under WINDOWS OS - #if defined(Q_OS_WIN) - return mCanBeTool & UBAbstractWidget::type_WIN; - #endif -} - -UBAbstractWidget::~UBAbstractWidget() -{ - // NOOP -} - -void UBAbstractWidget::loadMainHtml() -{ - QWebView::load(mMainHtmlUrl); -} - -bool UBAbstractWidget::event(QEvent *event) -{ - if (event->type() == QEvent::ContextMenu) - { - event->accept(); - return true; - } else { - return QWebView::event(event); - } -} - - -void UBAbstractWidget::mainFrameLoadFinished (bool ok) -{ - mInitialLoadDone = true; - mLoadIsErronous = !ok; - - update(); -} - - -bool UBAbstractWidget::hasEmbededObjects() -{ - if (QWebView::page()->mainFrame()) - { - QList htmlObjects = UBWebKitUtils::objectsInFrame(QWebView::page()->mainFrame()); - return htmlObjects.length() > 0; - } - - return false; -} - - -bool UBAbstractWidget::hasEmbededFlash() -{ - if (hasEmbededObjects()) - { - return QWebView::page()->mainFrame()->toHtml().contains("application/x-shockwave-flash"); - } - else - { - return false; - } -} - - -void UBAbstractWidget::resize(qreal width, qreal height) -{ - qreal w = qMax((qreal)mNominalSize.width(), width); - qreal h = qMax((qreal)mNominalSize.height(), height); - QWebView::page()->setViewportSize(QSize(w, h)); - QWebView::setFixedSize(QSize(w, h)); -} - - -QString UBAbstractWidget::iconFilePath(const QUrl& pUrl) -{ - // TODO UB 4.x read config.xml widget.icon param first - - QStringList files; - - files << "icon.svg"; // W3C widget default 1 - files << "icon.ico"; // W3C widget default 2 - files << "icon.png"; // W3C widget default 3 - files << "icon.gif"; // W3C widget default 4 - - files << "Icon.png"; // Apple widget default - - QString file = UBFileSystemUtils::getFirstExistingFileFromList(pUrl.toLocalFile(), files); - - // default - if (file.length() == 0) - { - file = QString(":/images/defaultWidgetIcon.png"); - } - - return file; -} - - - -QString UBAbstractWidget::widgetName(const QUrl& widgetPath) -{ - QString name; - QString version; - - QFile w3CConfigFile(widgetPath.toLocalFile() + "/config.xml"); - QFile appleConfigFile(widgetPath.toLocalFile() + "/Info.plist"); - - if (w3CConfigFile.exists() && w3CConfigFile.open(QFile::ReadOnly)) - { - QDomDocument doc; - doc.setContent(w3CConfigFile.readAll()); - QDomElement root = doc.firstChildElement("widget"); - if (!root.isNull()) - { - QDomElement nameElement = root.firstChildElement("name"); - if (!nameElement.isNull()) - name = nameElement.text(); - - version = root.attribute("version", ""); - } - - w3CConfigFile.close(); - } - else if (appleConfigFile.exists() && appleConfigFile.open(QFile::ReadOnly)) - { - QDomDocument doc; - doc.setContent(appleConfigFile.readAll()); - QDomElement root = doc.firstChildElement("plist"); - if (!root.isNull()) - { - QDomElement dictElement = root.firstChildElement("dict"); - if (!dictElement.isNull()) - { - QDomNodeList childNodes = dictElement.childNodes(); - - // looking for something like - // .. - // CFBundleDisplayName - // brain scans - // .. - - for(int i = 0; i < childNodes.count() - 1; i++) - { - if (childNodes.at(i).isElement()) - { - QDomElement elKey = childNodes.at(i).toElement(); - if (elKey.text() == "CFBundleDisplayName") - { - if (childNodes.at(i + 1).isElement()) - { - QDomElement elValue = childNodes.at(i + 1).toElement(); - name = elValue.text(); - } - } - else if (elKey.text() == "CFBundleShortVersionString") - { - if (childNodes.at(i + 1).isElement()) - { - QDomElement elValue = childNodes.at(i + 1).toElement(); - version = elValue.text(); - } - } - } - } - } - } - - appleConfigFile.close(); - } - - QString result; - - if (name.length() > 0) - { - result = name; - if (version.length() > 0) - { - result += " "; - result += version; - } - } - - return result; -} - - -int UBAbstractWidget::widgetType(const QUrl& pUrl) -{ - QString mime = UBFileSystemUtils::mimeTypeFromFileName(pUrl.toString()); - - if (mime == "application/vnd.apple-widget") - { - return UBWidgetType::Apple; - } - else if (mime == "application/widget") - { - return UBWidgetType::W3C; - } - else - { - return UBWidgetType::Other; - } -} - - -void UBAbstractWidget::mousePressEvent(QMouseEvent *event) -{ - if(mIsFrozen) - { - event->accept(); - return; - } - UBRoutedMouseEventWebView::mousePressEvent(event); - mMouseIsPressed = true; -} - - -void UBAbstractWidget::mouseMoveEvent(QMouseEvent *event) -{ - - if(mIsFrozen) - { - event->accept(); - return; - } - - // TODO UB 4.x fix web kit mouse move routing - - if (mFirstReleaseAfterMove) - { - mFirstReleaseAfterMove = false; - } - else - { - UBRoutedMouseEventWebView::mouseMoveEvent(event); - } -} - - -void UBAbstractWidget::mouseReleaseEvent(QMouseEvent *event) -{ - if(mIsFrozen) - { - event->accept(); - return; - } - - UBRoutedMouseEventWebView::mouseReleaseEvent(event); - mMouseIsPressed = false; - mFirstReleaseAfterMove = true; -} - -QWebView * UBAbstractWidget::createWindow(QWebPage::WebWindowType type) -{ - if (type == QWebPage::WebBrowserWindow) - { - UBApplication::applicationController->showInternet(); - return UBApplication::webController->createNewTab(); - } - else - { - return this; - } -} - - -void UBAbstractWidget::injectInlineJavaScript() -{ - if (!sInlineJavaScriptLoaded) - { - sInlineJavaScripts = UBApplication::applicationController->widgetInlineJavaScripts(); - sInlineJavaScriptLoaded = true; - } - - foreach(QString script, sInlineJavaScripts) - { - QWebView::page()->mainFrame()->evaluateJavaScript(script); - } -} - - -void UBAbstractWidget::javaScriptWindowObjectCleared() -{ - injectInlineJavaScript(); -} - - -void UBAbstractWidget::paintEvent(QPaintEvent * event) -{ - if (mIsFrozen) - { - QPainter p(this); - p.drawPixmap(0, 0, mSnapshot); - } - else if(mIsTakingSnapshot || (mInitialLoadDone && !mLoadIsErronous)) - { - QWebView::paintEvent(event); - } - else - { - 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 ..."); - - p.setFont(QFont("Arial", 12)); - - QFontMetrics fm = p.fontMetrics(); - QRect txtBoundingRect = fm.boundingRect(message); - - txtBoundingRect.moveCenter(rect().center()); - txtBoundingRect.adjust(-10, -5, 10, 5); - - p.setPen(Qt::NoPen); - p.setBrush(UBSettings::paletteColor); - p.drawRoundedRect(txtBoundingRect, 3, 3); - - p.setPen(Qt::white); - p.drawText(rect(), Qt::AlignCenter, message); - } -} -void UBAbstractWidget::dropEvent(QDropEvent *event) -{ - QWebView::dropEvent(event); -} - -QPixmap UBAbstractWidget::takeSnapshot() -{ - mIsTakingSnapshot = true; - - QPixmap pix(size()); - pix.fill(Qt::transparent); - - render(&pix); - - mIsTakingSnapshot = false; - - return pix; -} - - -void UBAbstractWidget::setSnapshot(const QPixmap& pix) -{ - mSnapshot = pix; -} - - -void UBAbstractWidget::freeze() -{ - QPixmap pix = takeSnapshot(); - mIsFrozen = true; - setSnapshot(pix); - update(); -} - - -void UBAbstractWidget::unFreeze() -{ - mIsFrozen = false; - update(); -} - diff --git a/src/domain/UBAbstractWidget.h b/src/domain/UBAbstractWidget.h deleted file mode 100644 index 304e00d4..00000000 --- a/src/domain/UBAbstractWidget.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef UBABSTRACTWIDGET_H_ -#define UBABSTRACTWIDGET_H_ - -#include -#include - -#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(); - - void loadMainHtml(); - - 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(); - bool canBeTool(); - - 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; - int mCanBeContent; - int mCanBeTool; - enum OSType - { - type_NONE = 0, // 0000 - type_WIN = 1, // 0001 - type_MAC = 2, // 0010 - type_UNIX = 4, // 0100 - type_ALL = 7, // 0111 - }; - - virtual void injectInlineJavaScript(); - virtual void paintEvent(QPaintEvent * event); - virtual void dropEvent(QDropEvent *); - - 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_ */ diff --git a/src/domain/UBAppleWidget.cpp b/src/domain/UBAppleWidget.cpp deleted file mode 100644 index 832240d8..00000000 --- a/src/domain/UBAppleWidget.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "UBAppleWidget.h" - -#include - -#include "web/UBWebKitUtils.h" - -#include "network/UBNetworkAccessManager.h" - -#include "core/memcheck.h" - -UBAppleWidget::UBAppleWidget(const QUrl& pWidgetUrl, QWidget *parent) - : UBAbstractWidget(pWidgetUrl, parent) -{ - QString path = pWidgetUrl.toLocalFile(); - - if (!path.endsWith(".wdgt") && !path.endsWith(".wdgt/")) - { - int lastSlashIndex = path.lastIndexOf("/"); - if (lastSlashIndex > 0) - { - path = path.mid(0, lastSlashIndex + 1); - } - } - - QFile plistFile(path + "/Info.plist"); - plistFile.open(QFile::ReadOnly); - - QByteArray plistBin = plistFile.readAll(); - QString plist = QString::fromUtf8(plistBin); - - int mainHtmlIndex = plist.indexOf("MainHTML"); - int mainHtmlIndexStart = plist.indexOf("", mainHtmlIndex); - int mainHtmlIndexEnd = plist.indexOf("", mainHtmlIndexStart); - - if (mainHtmlIndex > -1 && mainHtmlIndexStart > -1 && mainHtmlIndexEnd > -1) - { - mMainHtmlFileName = plist.mid(mainHtmlIndexStart + 8, mainHtmlIndexEnd - mainHtmlIndexStart - 8); - } - - mMainHtmlUrl = pWidgetUrl; - mMainHtmlUrl.setPath(pWidgetUrl.path() + "/" + mMainHtmlFileName); - - QWebView::load(mMainHtmlUrl); - - QPixmap defaultPixmap(pWidgetUrl.toLocalFile() + "/Default.png"); - - setFixedSize(defaultPixmap.size()); - - mNominalSize = defaultPixmap.size(); -} - -UBAppleWidget::~UBAppleWidget() -{ - // NOOP -} - - - - - - - diff --git a/src/domain/UBAppleWidget.h b/src/domain/UBAppleWidget.h deleted file mode 100644 index 91dbebb4..00000000 --- a/src/domain/UBAppleWidget.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef UBAPPLEWIDGET_H_ -#define UBAPPLEWIDGET_H_ - -#include -#include - -#include "UBAbstractWidget.h" - -class UBItem; - -class UBAppleWidget : public UBAbstractWidget -{ - Q_OBJECT; - - public: - UBAppleWidget(const QUrl& pWidgetUrl, QWidget *parent = 0); - virtual ~UBAppleWidget(); - -}; - -#endif /* UBAPPLEWIDGET_H_ */ diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index 66ae6ac6..f1ded872 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -37,7 +37,6 @@ #include "UBGraphicsWidgetItem.h" -#include "domain/UBAbstractWidget.h" #include "domain/UBGraphicsTextItem.h" #include "domain/UBGraphicsMediaItem.h" #include "domain/UBGraphicsGroupContainerItem.h" diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index de503788..da8e29a2 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -60,8 +60,6 @@ #include "domain/UBGraphicsGroupContainerItem.h" -#include "UBAppleWidget.h" -#include "UBW3CWidget.h" #include "UBGraphicsStroke.h" #include "core/memcheck.h" @@ -257,8 +255,8 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) , mDocument(parent) , mDarkBackground(false) , mCrossedBackground(false) - , mZoomFactor(1) , mIsDesktopMode(false) + , mZoomFactor(1) , mIsModified(true) , mBackgroundObject(0) , mPreviousWidth(0) @@ -1397,7 +1395,7 @@ UBGraphicsMediaItem* UBGraphicsScene::addAudio(const QUrl& pAudioFileUrl, bool s UBGraphicsWidgetItem* UBGraphicsScene::addWidget(const QUrl& pWidgetUrl, const QPointF& pPos) { - int widgetType = UBAbstractWidget::widgetType(pWidgetUrl); + int widgetType = UBGraphicsWidgetItem::widgetType(pWidgetUrl); if(widgetType == UBWidgetType::Apple) { diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index 0c280491..40ca22b3 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -41,7 +41,6 @@ class UBGraphicsTextItem; class UBGraphicsRuler; class UBGraphicsProtractor; class UBGraphicsCompass; -class UBAbstractWidget; class UBDocumentProxy; class UBGraphicsCurtainItem; class UBGraphicsStroke; diff --git a/src/domain/UBGraphicsWidgetItem.cpp b/src/domain/UBGraphicsWidgetItem.cpp index b388df6f..553bb8fe 100644 --- a/src/domain/UBGraphicsWidgetItem.cpp +++ b/src/domain/UBGraphicsWidgetItem.cpp @@ -24,9 +24,7 @@ #include "UBGraphicsWidgetItemDelegate.h" #include "UBGraphicsDelegateFrame.h" -#include "UBW3CWidget.h" #include "UBGraphicsScene.h" -#include "UBAppleWidget.h" #include "frameworks/UBFileSystemUtils.h" #include "web/UBWebPage.h" #include "network/UBNetworkAccessManager.h" @@ -51,14 +49,14 @@ QString UBGraphicsW3CWidgetItem::sNPAPIWrappperConfigTemplate; UBGraphicsWidgetItem::UBGraphicsWidgetItem(QGraphicsItem *parent, int widgetType) : UBGraphicsWebView(parent) - , mShouldMoveWidget(false) - , mUniboardAPI(0) , mIsResizable(false) , mInitialLoadDone(false) , mLoadIsErronous(false) , mIsFreezable(true) , mCanBeContent(0) , mCanBeTool(0) + , mShouldMoveWidget(false) + , mUniboardAPI(0) , mIsFrozen(false) , mIsTakingSnapshot(false) { diff --git a/src/domain/UBGraphicsWidgetItem.h b/src/domain/UBGraphicsWidgetItem.h index d9914da1..80edc768 100644 --- a/src/domain/UBGraphicsWidgetItem.h +++ b/src/domain/UBGraphicsWidgetItem.h @@ -17,21 +17,27 @@ #include #include +#include #include "core/UB.h" #include "UBGraphicsWebView.h" -#include "UBW3CWidget.h" -#include "UBAppleWidget.h" class UBWidgetUniboardAPI; class UBGraphicsScene; -class UBAbstractWidget; class UBW3CWidgetAPI; class UBW3CWidgetWebStorageAPI; class UBGraphiscItem; class UBGraphiscItemDelegate; +struct UBWidgetType +{ + enum Enum + { + W3C = 0, Apple, Other + }; +}; + class UBGraphicsWidgetItem : public UBGraphicsWebView { Q_OBJECT @@ -252,8 +258,6 @@ class UBGraphicsW3CWidgetItem : public UBGraphicsWidgetItem virtual UBItem* deepCopy() const; - UBW3CWidget* w3cWidget() const; - virtual void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget ); virtual void setUuid(const QUuid &pUuid); diff --git a/src/domain/UBW3CWidget.cpp b/src/domain/UBW3CWidget.cpp deleted file mode 100644 index 2160ccdb..00000000 --- a/src/domain/UBW3CWidget.cpp +++ /dev/null @@ -1,520 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "UBW3CWidget.h" - -#include -#include - -#include "frameworks/UBPlatformUtils.h" -#include "frameworks/UBFileSystemUtils.h" - -#include "core/UBApplication.h" -#include "core/UBSettings.h" -#include "api/UBWidgetUniboardAPI.h" - -#include "board/UBBoardController.h" - -#include "core/memcheck.h" - -const QString freezedWidgetDefaultContentFilePath = "./etc/freezedWidgetWrapper.html"; - -bool UBW3CWidget::sTemplateLoaded = false; -QMap UBW3CWidget::sNPAPIWrapperTemplates; -QString UBW3CWidget::sNPAPIWrappperConfigTemplate; - - -UBW3CWidget::UBW3CWidget(const QUrl& pWidgetUrl, QWidget *parent) - : UBAbstractWidget(pWidgetUrl, parent) - -{ - QString path = pWidgetUrl.toLocalFile(); - QDir potentialDir(path); - - if (!path.endsWith(".wgt") && !path.endsWith(".wgt/") && !potentialDir.exists()) - { - int lastSlashIndex = path.lastIndexOf("/"); - if (lastSlashIndex > 0) - { - path = path.mid(0, lastSlashIndex + 1); - } - } - - if(!path.endsWith("/")) - path += "/"; - - int width = 300; - int height = 150; - - QFile configFile(path + "config.xml"); - configFile.open(QFile::ReadOnly); - - QDomDocument doc; - doc.setContent(configFile.readAll()); - QDomNodeList widgetDomList = doc.elementsByTagName("widget"); - - if (widgetDomList.count() > 0) - { - QDomElement widgetElement = widgetDomList.item(0).toElement(); - - width = widgetElement.attribute("width", "300").toInt(); - height = widgetElement.attribute("height", "150").toInt(); - - mMetadatas.id = widgetElement.attribute("id", ""); - - //some early widget (<= 4.3.4) where using identifier instead of id - if (mMetadatas.id.length() == 0) - mMetadatas.id = widgetElement.attribute("identifier", ""); - - mMetadatas.version = widgetElement.attribute("version", ""); - - // TODO UB 4.x map properly ub namespace - mIsResizable = widgetElement.attribute("ub:resizable", "false") == "true"; - mIsFreezable = widgetElement.attribute("ub:freezable", "true") == "true"; - - QString roles = widgetElement.attribute("ub:roles", "content tool").trimmed().toLower(); - - //------------------------------// - - if( roles == "" || roles.contains("tool") ) - { - mCanBeTool = UBAbstractWidget::type_ALL; - } - - if( roles.contains("twin") ) - { - mCanBeTool |= UBAbstractWidget::type_WIN; - } - - if( roles.contains("tmac") ) - { - mCanBeTool |= UBAbstractWidget::type_MAC; - } - - if( roles.contains("tunix") ) - { - mCanBeTool |= UBAbstractWidget::type_UNIX; - } - - //---------// - - if( roles == "" || roles.contains("content") ) - { - mCanBeContent = UBAbstractWidget::type_ALL; - } - - if( roles.contains("cwin") ) - { - mCanBeContent |= UBAbstractWidget::type_WIN; - } - - if( roles.contains("cmac") ) - { - mCanBeContent |= UBAbstractWidget::type_MAC; - } - - if( roles.contains("cunix") ) - { - mCanBeContent |= UBAbstractWidget::type_UNIX; - } - - //------------------------------// - - QDomNodeList contentDomList = widgetElement.elementsByTagName("content"); - - if (contentDomList.count() > 0) - { - QDomElement contentElement = contentDomList.item(0).toElement(); - - mMainHtmlFileName = contentElement.attribute("src", ""); - } - - mMetadatas.name = textForSubElementByLocale(widgetElement, "name", locale()); - mMetadatas.description = textForSubElementByLocale(widgetElement, "description ", locale()); - - QDomNodeList authorDomList = widgetElement.elementsByTagName("author"); - - if (authorDomList.count() > 0) - { - QDomElement authorElement = authorDomList.item(0).toElement(); - - mMetadatas.author = authorElement.text(); - mMetadatas.authorHref = authorElement.attribute("href", ""); - mMetadatas.authorEmail = authorElement.attribute("email ", ""); - } - - QDomNodeList propertiesDomList = widgetElement.elementsByTagName("preference"); - - for (uint i = 0; i < propertiesDomList.length(); i++) - { - QDomElement preferenceElement = propertiesDomList.at(i).toElement(); - QString prefName = preferenceElement.attribute("name", ""); - - if (prefName.length() > 0) - { - QString prefValue = preferenceElement.attribute("value", ""); - bool readOnly = (preferenceElement.attribute("readonly", "false") == "true"); - - mPreferences.insert(prefName, PreferenceValue(prefValue, readOnly)); - } - } - } - - if (mMainHtmlFileName.length() == 0) - { - QFile defaultStartFile(path + "index.htm"); - - if (defaultStartFile.exists()) - { - mMainHtmlFileName = "index.htm"; - } - else - { - QFile secondDefaultStartFile(path + "index.html"); - - if (secondDefaultStartFile.exists()) - { - mMainHtmlFileName = "index.html"; - } - } - } - - mMainHtmlUrl = pWidgetUrl; - mMainHtmlUrl.setPath(pWidgetUrl.path() + "/" + mMainHtmlFileName); - // is it a valid local file ? - QFile f(mMainHtmlUrl.toLocalFile()); - - if(!f.exists()) - mMainHtmlUrl = QUrl(mMainHtmlFileName); - - connect(page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared())); - connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(javaScriptWindowObjectCleared())); - - QWebView::load(mMainHtmlUrl); - - setFixedSize(QSize(width, height)); - - mNominalSize = QSize(width, height); -} - -UBW3CWidget::~UBW3CWidget() -{ - // NOOP -} - -void UBW3CWidget::javaScriptWindowObjectCleared() -{ - UBWidgetUniboardAPI *uniboardAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene(), 0); - - page()->mainFrame()->addToJavaScriptWindowObject("sankore", uniboardAPI); - -} - -bool UBW3CWidget::hasNPAPIWrapper(const QString& pMimeType) -{ - loadNPAPIWrappersTemplates(); - - return sNPAPIWrapperTemplates.contains(pMimeType); -} - - -QString UBW3CWidget::createNPAPIWrapper(const QString& url, - const QString& pMimeType, const QSize& sizeHint, const QString& pName) -{ - const QString userWidgetPath = UBSettings::settings()->userInteractiveDirectory() + "/" + tr("Web"); - QDir userWidgetDir(userWidgetPath); - - return createNPAPIWrapperInDir(url, userWidgetDir, pMimeType, sizeHint, pName); -} - - - -QString UBW3CWidget::createNPAPIWrapperInDir(const QString& pUrl, const QDir& pDir, - const QString& pMimeType, const QSize& sizeHint, - const QString& pName) -{ - QString url = pUrl; - url = UBFileSystemUtils::removeLocalFilePrefix(url); - QString name = pName; - - QFileInfo fi(url); - - if (name.length() == 0) - name = fi.baseName(); - - if (fi.exists()){ - url = fi.fileName(); - } - - loadNPAPIWrappersTemplates(); - - QString htmlTemplate; - - if (pMimeType.length() > 0 && sNPAPIWrapperTemplates.contains(pMimeType)){ - htmlTemplate = sNPAPIWrapperTemplates.value(pMimeType); - } - else { - QString extension = UBFileSystemUtils::extension(url); - - if (sNPAPIWrapperTemplates.contains(extension)) - htmlTemplate = sNPAPIWrapperTemplates.value(extension); - } - - if (htmlTemplate.length() > 0){ - htmlTemplate = htmlTemplate.replace(QString("{in.url}"), url) - .replace(QString("{in.width}"), QString("%1").arg(sizeHint.width())) - .replace(QString("{in.height}"), QString("%1").arg(sizeHint.height())); - - QString configTemplate = sNPAPIWrappperConfigTemplate - .replace(QString("{in.id}"), url) - .replace(QString("{in.width}"), QString("%1").arg(sizeHint.width())) - .replace(QString("{in.height}"), QString("%1").arg(sizeHint.height())) - .replace(QString("{in.name}"), name) - .replace(QString("{in.startFile}"), QString("index.htm")); - - QString dirPath = pDir.path(); - if (!pDir.exists()) - pDir.mkpath(dirPath); - - QString widgetLibraryPath = dirPath + "/" + name + ".wgt"; - QDir widgetLibraryDir(widgetLibraryPath); - - if (widgetLibraryDir.exists()) - { - if (!UBFileSystemUtils::deleteDir(widgetLibraryDir.path())) - { - qWarning() << "Cannot delete old widget " << widgetLibraryDir.path(); - } - } - - widgetLibraryDir.mkpath(widgetLibraryPath); - if (fi.exists()){ - QString target = widgetLibraryPath + "/" + fi.fileName(); - QString source = pUrl; - source = UBFileSystemUtils::removeLocalFilePrefix(source); - QFile::copy(source, target); - } - - QFile configFile(widgetLibraryPath + "/config.xml"); - - if (!configFile.open(QIODevice::WriteOnly)) - { - qWarning() << "Cannot open file " << configFile.fileName(); - return ""; - } - - QTextStream outConfig(&configFile); - outConfig.setCodec("UTF-8"); - - outConfig << configTemplate; - configFile.close(); - - QFile indexFile(widgetLibraryPath + "/index.htm"); - - if (!indexFile.open(QIODevice::WriteOnly)) - { - qWarning() << "Cannot open file " << indexFile.fileName(); - return ""; - } - - QTextStream outIndex(&indexFile); - outIndex.setCodec("UTF-8"); - - outIndex << htmlTemplate; - indexFile.close(); - - return widgetLibraryPath; - } - else - { - return ""; - } -} - - -QString UBW3CWidget::createHtmlWrapperInDir(const QString& html, const QDir& pDir, - const QSize& sizeHint, const QString& pName) -{ - - QString widgetPath = pDir.path() + "/" + pName + ".wgt"; - widgetPath = UBFileSystemUtils::nextAvailableFileName(widgetPath); - QDir widgetDir(widgetPath); - - if (!widgetDir.exists()) - { - widgetDir.mkpath(widgetDir.path()); - } - - QFile configFile(widgetPath + "/" + "config.xml"); - - if (configFile.exists()) - { - configFile.remove(configFile.fileName()); - } - - if (!configFile.open(QIODevice::WriteOnly)) - { - qWarning() << "Cannot open file " << configFile.fileName(); - return ""; - } - - QTextStream outConfig(&configFile); - outConfig.setCodec("UTF-8"); - outConfig << "" << endl; - outConfig << "" << endl; - - outConfig << " " << pName << "" << endl; - outConfig << " " << endl; - - outConfig << "" << endl; - - configFile.close(); - - const QString fullHtmlFileName = widgetPath + "/" + pName + ".html"; - - QFile widgetHtmlFile(fullHtmlFileName); - if (widgetHtmlFile.exists()) - { - widgetHtmlFile.remove(widgetHtmlFile.fileName()); - } - if (!widgetHtmlFile.open(QIODevice::WriteOnly)) - { - qWarning() << "cannot open file " << widgetHtmlFile.fileName(); - return ""; - } - - QTextStream outStartFile(&widgetHtmlFile); - outStartFile.setCodec("UTF-8"); - - outStartFile << "" << endl; - outStartFile << "" << endl; - outStartFile << "" << endl; - outStartFile << " " << endl; - outStartFile << "" << endl; - outStartFile << " " << endl; - outStartFile << html << endl; - outStartFile << " " << endl; - outStartFile << "" << endl; - - widgetHtmlFile.close(); - - return widgetPath; - -} - -QString UBW3CWidget::freezedWidgetPage() -{ - static QString defaultcontent; - - if (defaultcontent.isNull()) { - QFile wrapperFile(freezedWidgetDefaultContentFilePath); - if (!wrapperFile.open(QIODevice::ReadOnly | QIODevice::Text)) { - qDebug() << "can't open wrapper file " + freezedWidgetDefaultContentFilePath; - defaultcontent = ""; - } else { - QByteArray arr = wrapperFile.readAll(); - if (!arr.isEmpty()) { - defaultcontent = QString(arr); - } else { - qDebug() << "content of " + freezedWidgetDefaultContentFilePath + "is empty"; - defaultcontent = ""; - } - } - } - - return defaultcontent; -} - -void UBW3CWidget::loadNPAPIWrappersTemplates() -{ - if (!sTemplateLoaded) - { - sNPAPIWrapperTemplates.clear(); - - QString etcPath = UBPlatformUtils::applicationResourcesDirectory() + "/etc/"; - - QDir etcDir(etcPath); - - foreach(QString fileName, etcDir.entryList()) - { - if (fileName.startsWith("npapi-wrapper") && (fileName.endsWith(".htm") || fileName.endsWith(".html"))) - { - - QString htmlContent = UBFileSystemUtils::readTextFile(etcPath + fileName); - - if (htmlContent.length() > 0) - { - QStringList tokens = fileName.split("."); - - if (tokens.length() >= 4) - { - QString mime = tokens.at(tokens.length() - 4 ); - mime += "/" + tokens.at(tokens.length() - 3); - - QString fileExtension = tokens.at(tokens.length() - 2); - - sNPAPIWrapperTemplates.insert(mime, htmlContent); - sNPAPIWrapperTemplates.insert(fileExtension, htmlContent); - } - } - } - } - - sNPAPIWrappperConfigTemplate = UBFileSystemUtils::readTextFile(etcPath + "npapi-wrapper.config.xml"); - - sTemplateLoaded = true; - } -} - - -QString UBW3CWidget::textForSubElementByLocale(QDomElement rootElement, QString subTagName, QLocale locale) -{ - QDomNodeList subList = rootElement.elementsByTagName(subTagName); - - QString lang = locale.name(); - - if (lang.length() > 2) - lang[2] = QLatin1Char('-'); - - if (subList.count() > 1) - { - for(int i = 0; i < subList.count(); i++) - { - QDomNode node = subList.at(i); - QDomElement element = node.toElement(); - - QString configLang = element.attribute("xml:lang", ""); - - if(lang == configLang || (configLang.length() == 2 && configLang == lang.left(2))) - return element.text(); - } - } - - if (subList.count() >= 1) - { - QDomElement element = subList.item(0).toElement(); - return element.text(); - } - - return ""; -} - diff --git a/src/domain/UBW3CWidget.h b/src/domain/UBW3CWidget.h deleted file mode 100644 index 1884c826..00000000 --- a/src/domain/UBW3CWidget.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef UBW3CWIDGET_H_ -#define UBW3CWIDGET_H_ - -#include -#include -#include - -/* - * wrapper for w3c widget 1.0 as define in http://www.w3.org/TR/widgets/ - */ - -#include "UBAbstractWidget.h" - -class UBItem; - -class UBW3CWidget : public UBAbstractWidget -{ - Q_OBJECT; - - public: - UBW3CWidget(const QUrl& pWidgetUrl, QWidget *parent = 0); - - virtual ~UBW3CWidget(); - - static QString createNPAPIWrapper(const QString& url, - const QString& pMimeType = QString(), const QSize& sizeHint = QSize(300, 150), - const QString& pName = QString()); - - static QString createNPAPIWrapperInDir(const QString& url, const QDir& pDir, - const QString& pMimeType = QString(), const QSize& sizeHint = QSize(300, 150), - const QString& pName = QString()); - - static QString createHtmlWrapperInDir(const QString& html, const QDir& pDir, - const QSize& sizeHint, const QString& pName); - - static QString freezedWidgetPage(); - - static bool hasNPAPIWrapper(const QString& pMimeType); - - class PreferenceValue - { - public: - - PreferenceValue() - { - // NOOP - } - - - PreferenceValue(const QString& pValue, bool pReadonly) - { - value = pValue; - readonly = pReadonly; - } - - QString value; - bool readonly; - }; - - class Metadata - { - public: - QString id; - QString name; - QString description; - QString author; - QString authorEmail; - QString authorHref; - QString version; - }; - - - QMap preferences() - { - return mPreferences; - } - - Metadata metadatas() const - { - return mMetadatas; - } - - private: - - QMap mPreferences; - - static bool sTemplateLoaded; - - static QMap sNPAPIWrapperTemplates; - - static QString sNPAPIWrappperConfigTemplate; - - static void loadNPAPIWrappersTemplates(); - - static QString textForSubElementByLocale(QDomElement rootElement, QString subTagName, QLocale locale); - - // w3c metadata widget attributes - // - // http://www.w3.org/TR/widgets/#widget0 - - Metadata mMetadatas; - - private slots: - - void javaScriptWindowObjectCleared(); - -}; - -#endif /* UBW3CWIDGET_H_ */ diff --git a/src/domain/domain.pri b/src/domain/domain.pri index 1394ba9e..fb6cd717 100644 --- a/src/domain/domain.pri +++ b/src/domain/domain.pri @@ -12,22 +12,19 @@ HEADERS += src/domain/UBGraphicsScene.h \ src/domain/UBGraphicsPolygonItem.h \ src/domain/UBItem.h \ src/domain/UBGraphicsWidgetItem.h \ - src/domain/UBAppleWidget.h \ src/domain/UBGraphicsPDFItem.h \ src/domain/UBGraphicsTextItem.h \ - src/domain/UBAbstractWidget.h \ - src/domain/UBW3CWidget.h \ src/domain/UBResizableGraphicsItem.h \ src/domain/UBGraphicsStroke.h \ - src/domain/UBGraphicsMediaItem.h \ - src/domain/UBAbstractUndoCommand.h\ - src/domain/UBAngleWidget.h \ - src/domain/UBGraphicsGroupContainerItem.h \ - src/domain/UBGraphicsGroupContainerItemDelegate.h \ - src/domain/UBGraphicsStrokesGroup.h + src/domain/UBGraphicsMediaItem.h \ + src/domain/UBAbstractUndoCommand.h\ + src/domain/UBAngleWidget.h \ + src/domain/UBGraphicsGroupContainerItem.h \ + src/domain/UBGraphicsGroupContainerItemDelegate.h \ + src/domain/UBGraphicsStrokesGroup.h HEADERS += src/domain/UBGraphicsItemDelegate.h \ - src/domain/UBGraphicsTextItemDelegate.h \ + src/domain/UBGraphicsTextItemDelegate.h \ src/domain/UBGraphicsDelegateFrame.h \ src/domain/UBGraphicsWidgetItemDelegate.h \ src/domain/UBGraphicsMediaItemDelegate.h @@ -47,22 +44,19 @@ SOURCES += src/domain/UBGraphicsScene.cpp \ src/domain/UBItem.cpp \ src/domain/UBGraphicsVideoItem.cpp \ src/domain/UBGraphicsWidgetItem.cpp \ - src/domain/UBAppleWidget.cpp \ src/domain/UBGraphicsPDFItem.cpp \ src/domain/UBGraphicsTextItem.cpp \ - src/domain/UBAbstractWidget.cpp \ - src/domain/UBW3CWidget.cpp \ src/domain/UBResizableGraphicsItem.cpp \ src/domain/UBGraphicsStroke.cpp \ - src/domain/UBGraphicsMediaItem.cpp \ - src/domain/UBAbstractUndoCommand.cpp \ - src/domain/UBAngleWidget.cpp \ - src/domain/ubgraphicsgroupcontaineritem.cpp \ - src/domain/ubgraphicsgroupcontaineritemdelegate.cpp \ - src/domain/UBGraphicsStrokesGroup.cpp + src/domain/UBGraphicsMediaItem.cpp \ + src/domain/UBAbstractUndoCommand.cpp \ + src/domain/UBAngleWidget.cpp \ + src/domain/ubgraphicsgroupcontaineritem.cpp \ + src/domain/ubgraphicsgroupcontaineritemdelegate.cpp \ + src/domain/UBGraphicsStrokesGroup.cpp SOURCES += src/domain/UBGraphicsItemDelegate.cpp \ - src/domain/UBGraphicsTextItemDelegate.cpp \ + src/domain/UBGraphicsTextItemDelegate.cpp \ src/domain/UBGraphicsMediaItemDelegate.cpp \ src/domain/UBGraphicsDelegateFrame.cpp \ src/domain/UBGraphicsWidgetItemDelegate.cpp \ diff --git a/src/gui/UBFavoriteToolPalette.cpp b/src/gui/UBFavoriteToolPalette.cpp index ad734942..c67163a7 100644 --- a/src/gui/UBFavoriteToolPalette.cpp +++ b/src/gui/UBFavoriteToolPalette.cpp @@ -18,11 +18,10 @@ #include "core/UBSettings.h" #include "board/UBBoardController.h" +#include "domain/UBGraphicsWidgetItem.h" #include "tools/UBToolsManager.h" -#include "domain/UBAbstractWidget.h" - #include "gui/UBMainWindow.h" #include "core/memcheck.h" @@ -67,9 +66,9 @@ UBFavoriteToolPalette::UBFavoriteToolPalette(QWidget* parent) foreach(QString widgetPath, appPathes) { - QAction *action = new QAction(UBAbstractWidget::widgetName(QUrl::fromLocalFile(widgetPath)), this); + QAction *action = new QAction(UBGraphicsWidgetItem::widgetName(QUrl::fromLocalFile(widgetPath)), this); action->setData(QUrl::fromLocalFile(widgetPath)); - action->setIcon(QIcon(UBAbstractWidget::iconFilePath(QUrl::fromLocalFile(widgetPath)))); + action->setIcon(QIcon(UBGraphicsWidgetItem::iconFilePath(QUrl::fromLocalFile(widgetPath)))); connect(action, SIGNAL(triggered()), this, SLOT(addFavorite())); toolsActions << action; diff --git a/src/gui/UBFeaturesWidget.cpp b/src/gui/UBFeaturesWidget.cpp index f43584f2..3d9401ee 100644 --- a/src/gui/UBFeaturesWidget.cpp +++ b/src/gui/UBFeaturesWidget.cpp @@ -1,7 +1,6 @@ #include #include "UBFeaturesWidget.h" -#include "domain/UBAbstractWidget.h" #include "gui/UBThumbnailWidget.h" #include "frameworks/UBFileSystemUtils.h" #include "core/UBApplication.h" diff --git a/src/gui/UBTeacherGuideWidgetsTools.cpp b/src/gui/UBTeacherGuideWidgetsTools.cpp index a7b4e199..f31e3481 100644 --- a/src/gui/UBTeacherGuideWidgetsTools.cpp +++ b/src/gui/UBTeacherGuideWidgetsTools.cpp @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include "UBTeacherGuideWidgetsTools.h" @@ -30,7 +32,7 @@ #include "board/UBBoardController.h" -#include "domain/UBW3CWidget.h" +#include "domain/UBGraphicsWidgetItem.h" #include "globals/UBGlobals.h" @@ -360,7 +362,7 @@ void UBTGMediaWidget::removeSource() void UBTGMediaWidget::hideEvent(QHideEvent* event) { if(mpWebView) - mpWebView->page()->mainFrame()->setContent(UBW3CWidget::freezedWidgetPage().toAscii()); + mpWebView->page()->mainFrame()->setContent(UBGraphicsW3CWidgetItem::freezedWidgetPage().toAscii()); QWidget::hideEvent(event); } @@ -421,7 +423,7 @@ void UBTGMediaWidget::createWorkWidget() mMediaType = "w3c"; if(!(mIsPresentationMode || mIsInitializationMode)){ QDir baseW3CDirectory(UBPersistenceManager::persistenceManager()->teacherGuideAbsoluteObjectPath(proxyDocument)); - mMediaPath = UBW3CWidget::createNPAPIWrapperInDir(mMediaPath,baseW3CDirectory,mimeType,QSize(100,100),QUuid::createUuid()); + mMediaPath = UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(mMediaPath,baseW3CDirectory,mimeType,QSize(100,100),QUuid::createUuid()); } mpWebView = new UBDraggableWeb(mMediaPath); mpWebView->setAcceptDrops(false); diff --git a/src/web/UBRoutedMouseEventWebView.cpp b/src/web/UBRoutedMouseEventWebView.cpp deleted file mode 100644 index c5613ad3..00000000 --- a/src/web/UBRoutedMouseEventWebView.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "UBRoutedMouseEventWebView.h" - -#include -#include -#include - -#include "core/memcheck.h" - -UBRoutedMouseEventWebView::UBRoutedMouseEventWebView(QWidget * parent) - : QWebView(parent) -{ - QWebView::setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform); -} - -UBRoutedMouseEventWebView::~UBRoutedMouseEventWebView() -{ - // NOOP -} - - -void UBRoutedMouseEventWebView::mouseMoveEvent(QMouseEvent* ev) -{ - QWebPage* p = page(); - - if (p) - { - p->event(ev); - } -} - -void UBRoutedMouseEventWebView::mousePressEvent(QMouseEvent* ev) -{ - QWebPage* p = page(); - - if (p) - { - p->event(ev); - } -} - -void UBRoutedMouseEventWebView::mouseDoubleClickEvent(QMouseEvent* ev) -{ - QWebPage* p = page(); - - if (p) - { - p->event(ev); - } -} - -void UBRoutedMouseEventWebView::mouseReleaseEvent(QMouseEvent* ev) -{ - QWebPage* p = page(); - - if (p) - { - p->event(ev); - } -} - -void UBRoutedMouseEventWebView::contextMenuEvent(QContextMenuEvent* ev) -{ - QWebPage* p = page(); - - if (p) - { - p->event(ev); - } -} - - -void UBRoutedMouseEventWebView::wheelEvent(QWheelEvent* ev) -{ - QWebPage* p = page(); - - if (p) - { - p->event(ev); - } -} -//void UBRoutedMouseEventWebView::dropEvent(QDropEvent *event) -//{ -//// QWebView::dropEvent(event); -// event->accept(); -//} diff --git a/src/web/UBRoutedMouseEventWebView.h b/src/web/UBRoutedMouseEventWebView.h deleted file mode 100644 index d954aabd..00000000 --- a/src/web/UBRoutedMouseEventWebView.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef UBROUTEDMOUSEEVENTWEBVIEW_H_ -#define UBROUTEDMOUSEEVENTWEBVIEW_H_ - -#include - -/* - * This class changes the routing of mouse events. - * Qt 4.5.2 does not report back the "accepted" flag set - * by WebKit, as we want to know if a mouse event has been - * consumed by webKit, we override them without keeping the - * accepted flag status - */ - -class UBRoutedMouseEventWebView : public QWebView -{ - public: - UBRoutedMouseEventWebView(QWidget * parent = 0 ); - virtual ~UBRoutedMouseEventWebView(); - - protected: - virtual void mouseMoveEvent(QMouseEvent* ev); - virtual void mousePressEvent(QMouseEvent* ev); - virtual void mouseDoubleClickEvent(QMouseEvent* ev); - virtual void mouseReleaseEvent(QMouseEvent* ev); - virtual void contextMenuEvent(QContextMenuEvent* ev); - virtual void wheelEvent(QWheelEvent* ev); -// virtual void dropEvent(QDropEvent *); -}; - -#endif /* UBROUTEDMOUSEEVENTWEBVIEW_H_ */ diff --git a/src/web/web.pri b/src/web/web.pri index fcc383c1..0b447efa 100644 --- a/src/web/web.pri +++ b/src/web/web.pri @@ -13,7 +13,6 @@ HEADERS += src/web/UBWebController.h \ src/web/UBWebKitUtils.h \ src/web/UBWebPage.h \ src/web/UBWebPluginWidget.h \ - src/web/UBRoutedMouseEventWebView.h \ src/web/UBOEmbedParser.h\ src/web/browser/WBBrowserWindow.h \ src/web/browser/WBChaseWidget.h \ @@ -35,7 +34,6 @@ SOURCES += src/web/UBWebController.cpp \ src/web/UBWebKitUtils.cpp \ src/web/UBWebPage.cpp \ src/web/UBWebPluginWidget.cpp \ - src/web/UBRoutedMouseEventWebView.cpp \ src/web/UBOEmbedParser.cpp\ src/web/browser/WBBrowserWindow.cpp \ src/web/browser/WBChaseWidget.cpp \