diff --git a/resources/sankore.qrc b/resources/sankore.qrc
index 9941c519..425c21c5 100644
--- a/resources/sankore.qrc
+++ b/resources/sankore.qrc
@@ -364,5 +364,6 @@
images/teacherGuide/w3c_24x24.svg
images/teacherGuide/pencil.svg
images/duplicateDisabled.svg
+ images/teacherGuide/flash_24x24.svg
diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp
index 954af5b5..2c025a7c 100644
--- a/src/core/UBPersistenceManager.cpp
+++ b/src/core/UBPersistenceManager.cpp
@@ -878,6 +878,34 @@ QString UBPersistenceManager::addObjectToTeacherGuideDirectory(UBDocumentProxy*
return destPath;
}
+QString UBPersistenceManager::addWidgetToTeacherGuideDirectory(UBDocumentProxy* pDocumentProxy, QString pPath)
+{
+ QString path = UBFileSystemUtils::removeLocalFilePrefix(pPath);
+ QFileInfo fi(path);
+ Q_ASSERT(fi.isDir());
+
+ int lastIndex = path.lastIndexOf(".");
+ QString extension("");
+ if(lastIndex != -1)
+ extension = path.right(path.length() - lastIndex);
+
+ QString uuid = QUuid::createUuid();
+
+ if (!fi.exists() || !pDocumentProxy)
+ return "";
+
+ QString directoryName = UBPersistenceManager::teacherGuideDirectory + "/" + uuid + extension;
+ QString destPath = pDocumentProxy->persistencePath() + "/" + directoryName;
+
+ if (!QDir(destPath).exists()){
+ QDir dir;
+ dir.mkdir(pDocumentProxy->persistencePath() + "/" + UBPersistenceManager::teacherGuideDirectory);
+ UBFileSystemUtils::copyDir(path,destPath);
+ }
+
+ return destPath;
+}
+
bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy,
QString path,
const QString& subdir,
diff --git a/src/core/UBPersistenceManager.h b/src/core/UBPersistenceManager.h
index 9ea21db3..79624b18 100644
--- a/src/core/UBPersistenceManager.h
+++ b/src/core/UBPersistenceManager.h
@@ -83,6 +83,7 @@ class UBPersistenceManager : public QObject
QString teacherGuideAbsoluteObjectPath(UBDocumentProxy* pDocumentProxy);
QString addObjectToTeacherGuideDirectory(UBDocumentProxy* proxy, QString pPath);
+ QString addWidgetToTeacherGuideDirectory(UBDocumentProxy* pDocumentProxy, QString pPath);
virtual void addDirectoryContentToDocument(const QString& documentRootFolder, UBDocumentProxy* pDocument);
diff --git a/src/gui/UBTeacherGuideWidget.cpp b/src/gui/UBTeacherGuideWidget.cpp
index 666c64e0..d7fd3493 100644
--- a/src/gui/UBTeacherGuideWidget.cpp
+++ b/src/gui/UBTeacherGuideWidget.cpp
@@ -565,7 +565,7 @@ void UBTeacherGuidePresentationWidget::showData( QVector data
}
else if (element->name == "media") {
createMediaButtonItem();
- QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem( mpMediaSwitchItem);
+ QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem(mpMediaSwitchItem);
newWidgetItem->setIcon(0, QIcon( ":images/teacherGuide/" + element->attributes.value("mediaType") + "_24x24.svg"));
newWidgetItem->setText(0, element->attributes.value("title"));
newWidgetItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_MEDIA);
@@ -582,7 +582,8 @@ void UBTeacherGuidePresentationWidget::showData( QVector data
QTreeWidgetItem* mediaItem = new QTreeWidgetItem(newWidgetItem);
mediaItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_NONE);
- UBTGMediaWidget* mediaWidget = new UBTGMediaWidget(element->attributes.value("relativePath"), newWidgetItem);
+ qDebug() << element->attributes.value("mediaType");
+ UBTGMediaWidget* mediaWidget = new UBTGMediaWidget(element->attributes.value("relativePath"), newWidgetItem,0,element->attributes.value("mediaType").contains("flash"));
newWidgetItem->setExpanded(false);
mpTreeWidget->setItemWidget(mediaItem, 0, mediaWidget);
}
diff --git a/src/gui/UBTeacherGuideWidgetsTools.cpp b/src/gui/UBTeacherGuideWidgetsTools.cpp
index 71334fbb..d9c88efd 100644
--- a/src/gui/UBTeacherGuideWidgetsTools.cpp
+++ b/src/gui/UBTeacherGuideWidgetsTools.cpp
@@ -304,7 +304,7 @@ UBTGMediaWidget::UBTGMediaWidget(QTreeWidgetItem* widget, QWidget* parent,const
setMinimumHeight(250);
}
-UBTGMediaWidget::UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget, QWidget* parent,const char* name): QStackedWidget(parent)
+UBTGMediaWidget::UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget, QWidget* parent,bool forceFlashMediaType,const char* name): QStackedWidget(parent)
, mpTreeWidgetItem(widget)
, mpDropMeWidget(NULL)
, mpWorkWidget(NULL)
@@ -320,7 +320,7 @@ UBTGMediaWidget::UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget, QWi
setObjectName(name);
mMediaPath = UBApplication::boardController->selectedDocument()->persistencePath()+ "/" + mediaPath;
setAcceptDrops(false);
- createWorkWidget();
+ createWorkWidget(forceFlashMediaType);
setFixedHeight(200);
}
@@ -343,8 +343,7 @@ void UBTGMediaWidget::initializeWithDom(QDomElement element)
mIsInitializationMode = true;
setAcceptDrops(false);
mMediaPath = UBApplication::boardController->selectedDocument()->persistencePath() + "/" + element.attribute("relativePath");
- qDebug() << mMediaPath;
- createWorkWidget();
+ createWorkWidget(element.attribute("mediaType").contains("flash"));
setFixedHeight(200);
mpTitle->setInitialText(element.attribute("title"));
mIsInitializationMode = false;
@@ -369,8 +368,12 @@ void UBTGMediaWidget::hideEvent(QHideEvent* event)
void UBTGMediaWidget::showEvent(QShowEvent* event)
{
QWidget::showEvent(event);
- if(mpWebView)
- mpWebView->load(QUrl(mMediaPath + "/index.htm"));
+ if(mpWebView){
+ QString indexPath = mMediaPath+"/index.htm";
+ if(!QFile::exists(indexPath))
+ indexPath += "l";
+ mpWebView->load(QUrl::fromLocalFile(indexPath));
+ }
}
tUBGEElementNode* UBTGMediaWidget::saveData()
@@ -392,7 +395,7 @@ void UBTGMediaWidget::dragEnterEvent(QDragEnterEvent *event)
event->accept();
}
-void UBTGMediaWidget::createWorkWidget()
+void UBTGMediaWidget::createWorkWidget(bool forceFlashMediaType)
{
QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(mMediaPath);
bool setMedia = true;
@@ -419,12 +422,32 @@ void UBTGMediaWidget::createWorkWidget()
mpMediaLabelWidget->setPixmap(pixmap);
mpMediaLabelWidget->setScaledContents(true);
}
- else if(mimeType.contains("application")){
+ else if(mimeType.contains("widget") && !forceFlashMediaType){
mMediaType = "w3c";
+ if(!(mIsPresentationMode || mIsInitializationMode)){
+ mMediaPath = UBPersistenceManager::persistenceManager()->addWidgetToTeacherGuideDirectory(proxyDocument, mMediaPath);
+ }
+ mpWebView = new UBDraggableWeb(mMediaPath);
+ mpWebView->setAcceptDrops(false);
+ mpWebView->settings()->setAttribute(QWebSettings::JavaEnabled, true);
+ mpWebView->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
+ mpWebView->settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true);
+ mpWebView->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true);
+ mpWebView->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
+ mpWebView->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
+ mpWebView->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
+ QString indexPath = mMediaPath+"/index.htm";
+ if(!QFile::exists(indexPath))
+ indexPath += "l";
+ mpWebView->load(QUrl::fromLocalFile(indexPath));
+ }
+ else if(mimeType.contains("x-shockwave-flash") || forceFlashMediaType){
+ mMediaType = "flash";
if(!(mIsPresentationMode || mIsInitializationMode)){
QDir baseW3CDirectory(UBPersistenceManager::persistenceManager()->teacherGuideAbsoluteObjectPath(proxyDocument));
mMediaPath = UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(mMediaPath,baseW3CDirectory,mimeType,QSize(100,100),QUuid::createUuid());
}
+ qDebug() << mMediaPath;
mpWebView = new UBDraggableWeb(mMediaPath);
mpWebView->setAcceptDrops(false);
mpWebView->settings()->setAttribute(QWebSettings::JavaEnabled, true);
@@ -434,8 +457,10 @@ void UBTGMediaWidget::createWorkWidget()
mpWebView->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
mpWebView->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
mpWebView->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
-
- mpWebView->load(QUrl(mMediaPath+"/index.htm"));
+ QString indexPath = mMediaPath+"/index.htm";
+ if(!QFile::exists(indexPath))
+ indexPath += "l";
+ mpWebView->load(QUrl::fromLocalFile(indexPath));
}
else{
qDebug() << "createWorkWidget mime type not handled" << mimeType;
diff --git a/src/gui/UBTeacherGuideWidgetsTools.h b/src/gui/UBTeacherGuideWidgetsTools.h
index 43e726e3..e4ee8c53 100644
--- a/src/gui/UBTeacherGuideWidgetsTools.h
+++ b/src/gui/UBTeacherGuideWidgetsTools.h
@@ -137,7 +137,7 @@ class UBTGMediaWidget : public QStackedWidget , public iUBTGSaveData
Q_OBJECT
public:
UBTGMediaWidget(QTreeWidgetItem* widget = 0, QWidget* parent = 0, const char* name = "UBTGMediaWidget");
- UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget = 0, QWidget* parent = 0, const char* name = "UBTGMediaWidget");
+ UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget = 0, QWidget* parent = 0, bool forceFlashMediaType = false, const char *name = "UBTGMediaWidget");
~UBTGMediaWidget();
tUBGEElementNode* saveData();
void initializeWithDom(QDomElement element);
@@ -152,7 +152,7 @@ protected:
private:
void parseMimeData(const QMimeData* pMimeData);
- void createWorkWidget();
+ void createWorkWidget(bool forceFlashMediaType = false);
void updateSize();
QTreeWidgetItem* mpTreeWidgetItem;