Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenBoard
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lifo
Nicolas Ollinger
OpenBoard
Commits
30b87f02
Commit
30b87f02
authored
Jun 30, 2011
by
Claudio Valerio
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added web pubblication interface
parent
3bdc181c
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
301 additions
and
391 deletions
+301
-391
UBDocumentPublisher.cpp
src/adaptors/publishing/UBDocumentPublisher.cpp
+199
-323
UBDocumentPublisher.h
src/adaptors/publishing/UBDocumentPublisher.h
+32
-50
UBBoardPaletteManager.cpp
src/board/UBBoardPaletteManager.cpp
+2
-2
UBApplication.cpp
src/core/UBApplication.cpp
+11
-9
UBApplication.h
src/core/UBApplication.h
+1
-0
UBApplicationController.cpp
src/core/UBApplicationController.cpp
+27
-1
UBApplicationController.h
src/core/UBApplicationController.h
+3
-1
UBDocumentManager.cpp
src/core/UBDocumentManager.cpp
+4
-2
UBDocumentController.h
src/document/UBDocumentController.h
+3
-3
UBMainWindow.cpp
src/gui/UBMainWindow.cpp
+14
-0
UBMainWindow.h
src/gui/UBMainWindow.h
+5
-0
No files found.
src/adaptors/publishing/UBDocumentPublisher.cpp
View file @
30b87f02
#include "UBDocumentPublisher.h"
#include "UBDocumentPublisher.h"
#include "frameworks/UBPlatformUtils.h"
#include "frameworks/UBPlatformUtils.h"
#include "frameworks/UBFileSystemUtils.h"
#include "frameworks/UBFileSystemUtils.h"
...
@@ -10,6 +10,7 @@
...
@@ -10,6 +10,7 @@
#include "core/UBDocumentManager.h"
#include "core/UBDocumentManager.h"
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/UBPersistenceManager.h"
#include "core/UBPersistenceManager.h"
#include "core/UBApplicationController.h"
#include "gui/UBMainWindow.h"
#include "gui/UBMainWindow.h"
...
@@ -27,163 +28,120 @@
...
@@ -27,163 +28,120 @@
#include "UBSvgSubsetRasterizer.h"
#include "UBSvgSubsetRasterizer.h"
#include "core/memcheck.h"
#include "core/memcheck.h"
#include <../Trolltech/Qt-4.7.0/include/QtWebKit/qwebview.h>
UBDocumentPublisher
::
UBDocumentPublisher
(
UBDocumentProxy
*
pDocument
,
QObject
*
parent
)
UBDocumentPublisher
::
UBDocumentPublisher
(
UBDocumentProxy
*
pDocument
,
QObject
*
parent
)
:
UBAbstractPublisher
(
parent
)
:
UBAbstractPublisher
(
parent
)
,
mSourceDocument
(
pDocument
)
,
mSourceDocument
(
pDocument
)
,
mPublishingDocument
(
0
)
,
mPublishingDocument
(
0
)
,
mUsername
(
0
)
,
mPassword
(
0
)
{
{
connect
(
this
,
SIGNAL
(
authenticated
(
const
QUuid
&
,
const
QString
&
))
mpWebView
=
new
QWebView
(
0
);
,
this
,
SLOT
(
postDocument
(
const
QUuid
&
,
const
QString
&
)));
UBApplication
::
mainWindow
->
addSankoreWebDocumentWidget
(
mpWebView
);
mpWebView
->
setWindowTitle
(
tr
(
"Sankore Uploading Page"
));
mpWebView
->
setAcceptDrops
(
false
);
connect
(
mpWebView
,
SIGNAL
(
loadFinished
(
bool
)),
this
,
SLOT
(
onLoadFinished
(
bool
)));
connect
(
mpWebView
,
SIGNAL
(
linkClicked
(
QUrl
)),
this
,
SLOT
(
onLinkClicked
(
QUrl
)));
init
();
}
}
UBDocumentPublisher
::~
UBDocumentPublisher
()
UBDocumentPublisher
::~
UBDocumentPublisher
()
{
{
delete
mpWebView
;
delete
mPublishingDocument
;
delete
mPublishingDocument
;
}
}
void
UBDocumentPublisher
::
publish
()
void
UBDocumentPublisher
::
publish
()
{
{
UBAbstractPublisher
::
authenticate
();
//check that the username and password are stored on preferences
mUsername
=
"Admin"
;
mPassword
=
"admin"
;
buildUbwFile
();
UBApplication
::
showMessage
(
tr
(
"Uploading Sankore File on Web."
));
sendUbw
();
}
}
void
UBDocumentPublisher
::
postDocument
(
const
QUuid
&
tokenUuid
,
const
QString
&
encryptedBase64Token
)
void
UBDocumentPublisher
::
buildUbwFile
(
)
{
{
mAuthenticationUuid
=
tokenUuid
;
QDir
d
;
mAuthenticationBase64Token
=
encryptedBase64Token
;
d
.
mkpath
(
UBFileSystemUtils
::
defaultTempDirPath
());
UBDocumentPublishingDialog
dialog
(
UBApplication
::
mainWindow
);
dialog
.
videoWarning
->
setVisible
(
UBPersistenceManager
::
persistenceManager
()
->
mayHaveVideo
(
mSourceDocument
)
);
QString
tmpDir
=
UBFileSystemUtils
::
createTempDir
(
);
dialog
.
title
->
setText
(
mSourceDocument
->
name
());
if
(
UBFileSystemUtils
::
copyDir
(
mSourceDocument
->
persistencePath
(),
tmpDir
))
QString
defaultEMail
=
UBSettings
::
settings
()
->
uniboardWebEMail
->
get
().
toString
();
dialog
.
email
->
setText
(
defaultEMail
);
QString
defaultAuthor
=
UBSettings
::
settings
()
->
uniboardWebAuthor
->
get
().
toString
();
dialog
.
author
->
setText
(
defaultAuthor
);
if
(
dialog
.
exec
()
==
QDialog
::
Accepted
)
{
{
QApplication
::
setOverrideCursor
(
QCursor
(
Qt
::
WaitCursor
));
QUuid
publishingUuid
=
QUuid
::
createUuid
();
UBApplication
::
showMessage
(
tr
(
"Preparing document for upload..."
),
true
);
mTitle
=
dialog
.
title
->
text
();
mDescription
=
dialog
.
description
->
toPlainText
();
mEMail
=
dialog
.
email
->
text
();
mAuthor
=
dialog
.
author
->
text
();
bool
attachPDF
=
dialog
.
attachPDF
->
isChecked
(
);
mPublishingDocument
=
new
UBDocumentProxy
(
tmpDir
);
bool
attachUBZ
=
dialog
.
attachUBZ
->
isChecked
(
);
mPublishingDocument
->
setPageCount
(
mSourceDocument
->
pageCount
()
);
mPublishingServiceUrl
=
UBSettings
::
settings
()
->
documentsPublishingUrl
;
rasterizeScenes
()
;
UBSettings
::
settings
()
->
uniboardWebEMail
->
set
(
mEMail
);
upgradeDocumentForPublishing
();
UBSettings
::
settings
()
->
uniboardWebAuthor
->
set
(
mAuthor
);
QDir
d
;
UBExportFullPDF
pdfExporter
;
d
.
mkpath
(
UBFileSystemUtils
::
defaultTempDirPath
());
pdfExporter
.
setVerbode
(
false
);
pdfExporter
.
persistsDocument
(
mSourceDocument
,
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBStringUtils
::
toCanonicalUuid
(
publishingUuid
)
+
".pdf"
);
QString
tmpDir
=
UBFileSystemUtils
::
createTempDir
();
UBExportDocument
ubzExporter
;
ubzExporter
.
setVerbode
(
false
);
ubzExporter
.
persistsDocument
(
mSourceDocument
,
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBStringUtils
::
toCanonicalUuid
(
publishingUuid
)
+
".ubz"
);
if
(
UBFileSystemUtils
::
copyDir
(
mSourceDocument
->
persistencePath
(),
tmpDir
))
{
QUuid
publishingUuid
=
QUuid
::
createUuid
();
mPublishingDocument
=
new
UBDocumentProxy
(
tmpDir
);
mPublishingDocument
->
setPageCount
(
mSourceDocument
->
pageCount
());
rasterizeScenes
();
//rasterizePDF(); // not needed as we do not publish svg file anymore
// remove all useless files
//rasterizeSVGImages(); // not needed as we do not publish svg file anymore
for
(
int
pageIndex
=
0
;
pageIndex
<
mPublishingDocument
->
pageCount
();
pageIndex
++
)
{
QString
filename
=
mPublishingDocument
->
persistencePath
()
+
UBFileSystemUtils
::
digitFileFormat
(
"/page%1.svg"
,
pageIndex
+
1
);
upgradeDocumentForPublishing
();
QFile
::
remove
(
filename
);
}
if
(
attachPDF
)
{
UBExportFullPDF
pdfExporter
;
pdfExporter
.
setVerbode
(
false
);
pdfExporter
.
persistsDocument
(
mSourceDocument
,
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBStringUtils
::
toCanonicalUuid
(
publishingUuid
)
+
".pdf"
);
}
if
(
attachUBZ
)
{
UBExportDocument
ubzExporter
;
ubzExporter
.
setVerbode
(
false
);
ubzExporter
.
persistsDocument
(
mSourceDocument
,
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBStringUtils
::
toCanonicalUuid
(
publishingUuid
)
+
".ubz"
);
}
// remove all useless files
for
(
int
pageIndex
=
0
;
pageIndex
<
mPublishingDocument
->
pageCount
();
pageIndex
++
)
{
QString
filename
=
mPublishingDocument
->
persistencePath
()
+
UBFileSystemUtils
::
digitFileFormat
(
"/page%1.svg"
,
pageIndex
+
1
);
QFile
::
remove
(
filename
);
}
UBFileSystemUtils
::
deleteDir
(
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBPersistenceManager
::
imageDirectory
);
UBFileSystemUtils
::
deleteDir
(
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBPersistenceManager
::
objectDirectory
);
UBFileSystemUtils
::
deleteDir
(
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBPersistenceManager
::
videoDirectory
);
UBFileSystemUtils
::
deleteDir
(
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBPersistenceManager
::
audioDirectory
);
QString
tempZipFile
=
UBFileSystemUtils
::
defaultTempDirPath
()
UBFileSystemUtils
::
deleteDir
(
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBPersistenceManager
::
imageDirectory
);
+
"/"
+
UBStringUtils
::
toCanonicalUuid
(
QUuid
::
createUuid
())
+
".zip"
;
UBFileSystemUtils
::
deleteDir
(
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBPersistenceManager
::
objectDirectory
);
UBFileSystemUtils
::
deleteDir
(
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBPersistenceManager
::
videoDirectory
);
UBFileSystemUtils
::
deleteDir
(
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBPersistenceManager
::
audioDirectory
);
//qDebug() << "compressing" << mPublishingDocument->persistencePath() << "in" << tempZipFile
;
mTmpZipFile
=
UBFileSystemUtils
::
defaultTempDirPath
()
+
"/"
+
UBStringUtils
::
toCanonicalUuid
(
QUuid
::
createUuid
())
+
".zip"
;
QuaZip
zip
(
tempZipFile
);
QuaZip
zip
(
mTmpZipFile
);
zip
.
setFileNameCodec
(
"UTF-8"
);
zip
.
setFileNameCodec
(
"UTF-8"
);
if
(
!
zip
.
open
(
QuaZip
::
mdCreate
))
if
(
!
zip
.
open
(
QuaZip
::
mdCreate
))
{
{
qWarning
()
<<
"Export failed. Cause: zip.open(): "
<<
zip
.
getZipError
()
<<
","
<<
tempZipFile
;
qWarning
()
<<
"Export failed. Cause: zip.open(): "
<<
zip
.
getZipError
()
<<
","
<<
mTmpZipFile
;
QApplication
::
restoreOverrideCursor
();
QApplication
::
restoreOverrideCursor
();
return
;
return
;
}
}
QuaZipFile
outFile
(
&
zip
);
if
(
!
UBFileSystemUtils
::
compressDirInZip
(
mPublishingDocument
->
persistencePath
(),
""
,
&
outFile
,
true
))
QuaZipFile
outFile
(
&
zip
);
{
qWarning
(
"Export failed. compressDirInZip failed ..."
);
zip
.
close
();
//zip.remove();
UBApplication
::
showMessage
(
tr
(
"Export failed."
));
QApplication
::
restoreOverrideCursor
();
return
;
}
if
(
zip
.
getZipError
()
!=
0
)
{
qWarning
(
"Export failed. Cause: zip.close(): %d"
,
zip
.
getZipError
());
zip
.
close
();
//zip.remove();
UBApplication
::
showMessage
(
tr
(
"Export failed."
));
QApplication
::
restoreOverrideCursor
();
return
;
}
if
(
!
UBFileSystemUtils
::
compressDirInZip
(
mPublishingDocument
->
persistencePath
(),
""
,
&
outFile
,
true
))
{
qWarning
(
"Export failed. compressDirInZip failed ..."
);
zip
.
close
();
zip
.
close
();
UBApplication
::
showMessage
(
tr
(
"Export failed."
));
mPublishingUrl
=
QUrl
(
mPublishingServiceUrl
+
"/documents/publish/"
QApplication
::
restoreOverrideCursor
();
+
UBStringUtils
::
toCanonicalUuid
(
mSourceDocument
->
uuid
()));
return
;
sendZipToUniboardWeb
(
tempZipFile
,
publishingUuid
);
}
}
else
if
(
zip
.
getZipError
()
!=
0
)
{
{
UBApplication
::
showMessage
(
tr
(
"Export failed ..."
));
qWarning
(
"Export failed. Cause: zip.close(): %d"
,
zip
.
getZipError
());
zip
.
close
();
UBApplication
::
showMessage
(
tr
(
"Export failed."
));
QApplication
::
restoreOverrideCursor
();
QApplication
::
restoreOverrideCursor
();
return
;
}
}
zip
.
close
();
}
}
else
else
{
{
...
@@ -192,64 +150,16 @@ void UBDocumentPublisher::postDocument(const QUuid& tokenUuid, const QString& en
...
@@ -192,64 +150,16 @@ void UBDocumentPublisher::postDocument(const QUuid& tokenUuid, const QString& en
}
}
}
}
/*
* // not needed as we do not publish svg file anymore
*
void UBDocumentPublisher::rasterizePDF()
{
if (UBPersistenceManager::persistenceManager()->mayHavePDF(mPublishingDocument))
{
UBSvgSubsetAdaptor::convertPDFObjectsToImages(mPublishingDocument);
QDir objectDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::objectDirectory);
QStringList filters;
filters << "*.pdf";
foreach(QFileInfo fi, objectDir.entryInfoList(filters))
{
QFile::remove(fi.absoluteFilePath());
}
}
}
*/
/*
* // not needed as we do not publish svg file anymore
void UBDocumentPublisher::rasterizeSVGImages()
{
if (UBPersistenceManager::persistenceManager()->mayHaveSVGImages(mPublishingDocument))
{
UBSvgSubsetAdaptor::convertSvgImagesToImages(mPublishingDocument);
QDir objectDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::imageDirectory);
QStringList filters;
filters << "*.svg";
foreach(QFileInfo fi, objectDir.entryInfoList(filters))
{
QFile::remove(fi.absoluteFilePath());
}
}
}
*/
void
UBDocumentPublisher
::
rasterizeScenes
()
void
UBDocumentPublisher
::
rasterizeScenes
()
{
{
for
(
int
pageIndex
=
0
;
pageIndex
<
mPublishingDocument
->
pageCount
();
pageIndex
++
)
for
(
int
pageIndex
=
0
;
pageIndex
<
mPublishingDocument
->
pageCount
();
pageIndex
++
)
{
{
UBApplication
::
showMessage
(
tr
(
"Converting page %1/%2 ..."
).
arg
(
pageIndex
+
1
).
arg
(
mPublishingDocument
->
pageCount
()),
true
);
UBApplication
::
showMessage
(
tr
(
"Converting page %1/%2 ..."
).
arg
(
pageIndex
+
1
).
arg
(
mPublishingDocument
->
pageCount
()),
true
);
UBSvgSubsetRasterizer
rasterizer
(
mPublishingDocument
,
pageIndex
);
UBSvgSubsetRasterizer
rasterizer
(
mPublishingDocument
,
pageIndex
);
QString
filename
=
mPublishingDocument
->
persistencePath
()
+
QString
filename
=
mPublishingDocument
->
persistencePath
()
+
UBFileSystemUtils
::
digitFileFormat
(
"/page%1.jpg"
,
pageIndex
+
1
);
UBFileSystemUtils
::
digitFileFormat
(
"/page%1.jpg"
,
pageIndex
+
1
);
rasterizer
.
rasterizeToFile
(
filename
);
rasterizer
.
rasterizeToFile
(
filename
);
...
@@ -275,7 +185,7 @@ void UBDocumentPublisher::updateGoogleMapApiKey()
...
@@ -275,7 +185,7 @@ void UBDocumentPublisher::updateGoogleMapApiKey()
{
{
QFile
file
(
fileInfo
.
absoluteFilePath
());
QFile
file
(
fileInfo
.
absoluteFilePath
());
if
(
file
.
open
(
QIODevice
::
ReadWrite
))
if
(
file
.
open
(
QIODevice
::
ReadWrite
))
{
{
QTextStream
stream
(
&
file
);
QTextStream
stream
(
&
file
);
QString
content
=
stream
.
readAll
();
QString
content
=
stream
.
readAll
();
...
@@ -298,7 +208,7 @@ void UBDocumentPublisher::updateGoogleMapApiKey()
...
@@ -298,7 +208,7 @@ void UBDocumentPublisher::updateGoogleMapApiKey()
void
UBDocumentPublisher
::
upgradeDocumentForPublishing
()
void
UBDocumentPublisher
::
upgradeDocumentForPublishing
()
{
{
for
(
int
pageIndex
=
0
;
pageIndex
<
mPublishingDocument
->
pageCount
();
pageIndex
++
)
for
(
int
pageIndex
=
0
;
pageIndex
<
mPublishingDocument
->
pageCount
();
pageIndex
++
)
{
{
UBGraphicsScene
*
scene
=
UBSvgSubsetAdaptor
::
loadScene
(
mPublishingDocument
,
pageIndex
);
UBGraphicsScene
*
scene
=
UBSvgSubsetAdaptor
::
loadScene
(
mPublishingDocument
,
pageIndex
);
...
@@ -306,25 +216,17 @@ void UBDocumentPublisher::upgradeDocumentForPublishing()
...
@@ -306,25 +216,17 @@ void UBDocumentPublisher::upgradeDocumentForPublishing()
QList
<
UBGraphicsW3CWidgetItem
*>
widgets
;
QList
<
UBGraphicsW3CWidgetItem
*>
widgets
;
foreach
(
QGraphicsItem
*
item
,
scene
->
items
())
foreach
(
QGraphicsItem
*
item
,
scene
->
items
()){
{
UBGraphicsW3CWidgetItem
*
widgetItem
=
dynamic_cast
<
UBGraphicsW3CWidgetItem
*>
(
item
);
UBGraphicsW3CWidgetItem
*
widgetItem
=
dynamic_cast
<
UBGraphicsW3CWidgetItem
*>
(
item
);
if
(
widgetItem
)
if
(
widgetItem
){
{
generateWidgetPropertyScript
(
widgetItem
,
pageIndex
+
1
);
generateWidgetPropertyScript
(
widgetItem
,
pageIndex
+
1
);
sceneHasWidget
=
true
;
sceneHasWidget
=
true
;
widgets
<<
widgetItem
;
widgets
<<
widgetItem
;
}
}
}
}
//if (sceneHasWidget)
QString
filename
=
mPublishingDocument
->
persistencePath
()
+
UBFileSystemUtils
::
digitFileFormat
(
"/page%1.json"
,
pageIndex
+
1
);
//{
// updateSVGForWidget(pageIndex); // not needed as we do not publish svg file anymore
//}
QString
filename
=
mPublishingDocument
->
persistencePath
()
+
UBFileSystemUtils
::
digitFileFormat
(
"/page%1.json"
,
pageIndex
+
1
);
QFile
jsonFile
(
filename
);
QFile
jsonFile
(
filename
);
if
(
jsonFile
.
open
(
QIODevice
::
WriteOnly
|
QIODevice
::
Truncate
))
if
(
jsonFile
.
open
(
QIODevice
::
WriteOnly
|
QIODevice
::
Truncate
))
...
@@ -381,10 +283,10 @@ void UBDocumentPublisher::upgradeDocumentForPublishing()
...
@@ -381,10 +283,10 @@ void UBDocumentPublisher::upgradeDocumentForPublishing()
sep
=
""
;
sep
=
""
;
jsonFile
.
write
(
QString
(
"
\"
%1
\"
:
\"
%2
\"
%3
\n
"
)
jsonFile
.
write
(
QString
(
"
\"
%1
\"
:
\"
%2
\"
%3
\n
"
)
.
arg
(
key
)
.
arg
(
key
)
.
arg
(
preferences
.
value
(
key
))
.
arg
(
preferences
.
value
(
key
))
.
arg
(
sep
)
.
arg
(
sep
)
.
toUtf8
());
.
toUtf8
());
}
}
jsonFile
.
write
(
QString
(
" },
\n
"
).
toUtf8
());
jsonFile
.
write
(
QString
(
" },
\n
"
).
toUtf8
());
...
@@ -399,10 +301,10 @@ void UBDocumentPublisher::upgradeDocumentForPublishing()
...
@@ -399,10 +301,10 @@ void UBDocumentPublisher::upgradeDocumentForPublishing()
sep
=
""
;
sep
=
""
;
jsonFile
.
write
(
QString
(
"
\"
%1
\"
:
\"
%2
\"
%3
\n
"
)
jsonFile
.
write
(
QString
(
"
\"
%1
\"
:
\"
%2
\"
%3
\n
"
)
.
arg
(
entry
)
.
arg
(
entry
)
.
arg
(
datastoreEntries
.
value
(
entry
))
.
arg
(
datastoreEntries
.
value
(
entry
))
.
arg
(
sep
)
.
arg
(
sep
)
.
toUtf8
());
.
toUtf8
());
}
}
jsonFile
.
write
(
QString
(
" }
\n
"
).
toUtf8
());
jsonFile
.
write
(
QString
(
" }
\n
"
).
toUtf8
());
...
@@ -426,57 +328,6 @@ void UBDocumentPublisher::upgradeDocumentForPublishing()
...
@@ -426,57 +328,6 @@ void UBDocumentPublisher::upgradeDocumentForPublishing()
}
}
/** // not needed as we do not publish svg file anymore
void UBDocumentPublisher::updateSVGForWidget(int pageIndex)
{
QString fileName = mPublishingDocument->persistencePath() +
UBFileSystemUtils::digitFileFormat("/page%1.svg", pageIndex + 1);
QFile svgFile(fileName);
if (svgFile.exists())
{
if (!svgFile.open(QIODevice::ReadWrite))
{
qWarning() << "Cannot open file " << fileName << " for widget upgrade ...";
return;
}
QTextStream stream(&svgFile);
QStringList lines;
QString line;
do
{
line = stream.readLine();
if (!line.isNull())
{
if (line.contains("<svg") && line.contains(">")) // TODO UB 4.6, this is naive ... the SVG tag may be on several lines
{
lines << "<?xml-stylesheet type=\"text/css\" href=\"" + UBSettings::settings()->documentPlayerCssUrl + "\" ?>";
lines << line;
lines << "";
lines << " <script type=\"text/ecmascript\" xlink:href=\"" + UBSettings::settings()->documentPlayerScriptUrl + "\"/>";
lines << " <script type=\"text/ecmascript\" xlink:href=\"" + UBSettings::settings()->documentPlayerPageScriptUrl + "\"/>";
lines << "";
}
else
{
lines << line;
}
}
}
while (!line.isNull());
svgFile.resize(0);
svgFile.write(lines.join("\n").toUtf8()); // TODO UB 4.x detect real html encoding
svgFile.close();
}
}
*/
void
UBDocumentPublisher
::
generateWidgetPropertyScript
(
UBGraphicsW3CWidgetItem
*
widgetItem
,
int
pageNumber
)
void
UBDocumentPublisher
::
generateWidgetPropertyScript
(
UBGraphicsW3CWidgetItem
*
widgetItem
,
int
pageNumber
)
{
{
...
@@ -487,15 +338,13 @@ void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *
...
@@ -487,15 +338,13 @@ void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *
if
(
!
startFileName
.
startsWith
(
"http://"
))
if
(
!
startFileName
.
startsWith
(
"http://"
))
{
{
QString
startFilePath
=
mPublishingDocument
->
persistencePath
()
+
"/"
QString
startFilePath
=
mPublishingDocument
->
persistencePath
()
+
"/"
+
UBPersistenceManager
::
widgetDirectory
+
"/"
+
widgetItem
->
uuid
().
toString
()
+
".wgt/"
+
startFileName
;
+
UBPersistenceManager
::
widgetDirectory
+
"/"
+
widgetItem
->
uuid
().
toString
()
+
".wgt/"
+
startFileName
;
QFile
startFile
(
startFilePath
);
QFile
startFile
(
startFilePath
);
if
(
startFile
.
exists
())
if
(
startFile
.
exists
())
{
{
if
(
startFile
.
open
(
QIODevice
::
ReadWrite
))
if
(
startFile
.
open
(
QIODevice
::
ReadWrite
))
{
{
QTextStream
stream
(
&
startFile
);
QTextStream
stream
(
&
startFile
);
QStringList
lines
;
QStringList
lines
;
...
@@ -663,111 +512,138 @@ void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *
...
@@ -663,111 +512,138 @@ void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *
}
}
}
}
}
}
else
else
{
{
qWarning
()
<<
"Remote Widget start file, cannot inject widget preferences and datastore entries"
;
qWarning
()
<<
"Remote Widget start file, cannot inject widget preferences and datastore entries"
;
}
}
}
}
void
UBDocumentPublisher
::
sendZipToUniboardWeb
(
const
QString
&
zipFilePath
,
const
QUuid
&
publishingUuid
)
{
QFile
zipFile
(
zipFilePath
);
if
(
!
zipFile
.
open
(
QIODevice
::
ReadOnly
))
{
qWarning
()
<<
"Cannot open file"
<<
zipFilePath
<<
"for upload to Sankore Web"
;
return
;
}
QUrl
publishingEndpoint
=
QUrl
(
mPublishingServiceUrl
);
mUploadRequest
=
new
UBServerXMLHttpRequest
(
UBNetworkAccessManager
::
defaultAccessManager
()
void
UBDocumentPublisher
::
init
()
,
"application/octet-stream"
);
mUploadRequest
->
setVerbose
(
true
);
connect
(
mUploadRequest
,
SIGNAL
(
progress
(
qint64
,
qint64
)),
this
,
SLOT
(
uploadProgress
(
qint64
,
qint64
)));
connect
(
mUploadRequest
,
SIGNAL
(
finished
(
bool
,
const
QByteArray
&
)),
this
,
SLOT
(
postZipUploadResponse
(
bool
,
const
QByteArray
&
)));
mUploadRequest
->
addHeader
(
"Publishing-UUID"
,
UBStringUtils
::
toCanonicalUuid
(
publishingUuid
));
mUploadRequest
->
addHeader
(
"Document-UUID"
,
UBStringUtils
::
toCanonicalUuid
(
mSourceDocument
->
uuid
()));
mUploadRequest
->
addHeader
(
"Document-PageCount"
,
QString
(
"%1"
).
arg
(
mSourceDocument
->
pageCount
()));
mUploadRequest
->
addHeader
(
"Document-Title"
,
mTitle
);
mUploadRequest
->
addHeader
(
"Document-Author"
,
mAuthor
);
mUploadRequest
->
addHeader
(
"Document-AuthorEMail"
,
mEMail
);
mUploadRequest
->
addHeader
(
"Document-Description"
,
mDescription
);
mUploadRequest
->
addHeader
(
"Deletion-Token"
,
UBStringUtils
::
toCanonicalUuid
(
QUuid
::
createUuid
()));
mUploadRequest
->
addHeader
(
"Token-UUID"
,
UBStringUtils
::
toCanonicalUuid
(
mAuthenticationUuid
));
mUploadRequest
->
addHeader
(
"Token-Encrypted"
,
mAuthenticationBase64Token
);
mUploadRequest
->
post
(
publishingEndpoint
,
zipFile
.
readAll
());
zipFile
.
remove
();
}
void
UBDocumentPublisher
::
uploadProgress
(
qint64
bytesSent
,
qint64
bytesTotal
)
{
{
int
percentage
=
(((
qreal
)
bytesSent
/
(
qreal
)
bytesTotal
)
*
100
);
mCrlf
=
0x0d
;
mCrlf
+=
0x0a
;
if
(
bytesSent
<
bytesTotal
)
mpNetworkMgr
=
new
QNetworkAccessManager
(
this
);
UBApplication
::
showMessage
(
tr
(
"Upload to Sankore Web in progress %1 %"
).
arg
(
percentage
),
true
);
mpCookieJar
=
new
QNetworkCookieJar
();
else
UBApplication
::
showMessage
(
tr
(
"Sending document ..."
),
true
);
connect
(
mpNetworkMgr
,
SIGNAL
(
finished
(
QNetworkReply
*
)),
this
,
SLOT
(
onFinished
(
QNetworkReply
*
)));
}
}
void
UBDocumentPublisher
::
onFinished
(
QNetworkReply
*
reply
)
void
UBDocumentPublisher
::
postZipUploadResponse
(
bool
success
,
const
QByteArray
&
payload
)
{
{
if
(
success
)
QByteArray
response
=
reply
->
readAll
();
{
UBApplication
::
showMessage
(
tr
(
"The document has been sent to %1"
).
arg
(
UBSettings
::
settings
()
->
uniboardWebUrl
->
get
().
toString
()),
false
);
if
(
!
bCookieSet
)
}
else
{
{
qWarning
()
<<
"error uploading document to Sankore Web"
<<
QString
::
fromUtf8
(
payload
);
QList
<
QNetworkCookie
>
cookiesList
;
QVariant
cookieHeader
=
reply
->
rawHeader
(
"Set-Cookie"
);
qDebug
()
<<
cookieHeader
.
toString
();
// First we concatenate all the Set-Cookie values (the packet can contains many of them)
QStringList
qslCookie
=
cookieHeader
.
toString
().
split
(
"
\n
"
);
QString
qsCookieValue
=
qslCookie
.
at
(
0
);
for
(
int
i
=
1
;
i
<
qslCookie
.
size
();
i
++
)
{
qsCookieValue
+=
"; "
+
qslCookie
.
at
(
i
);
}
qDebug
()
<<
"qsCookieValue "
<<
qsCookieValue
;
// Now we isolate every cookie value
QStringList
qslCookieVals
=
qsCookieValue
.
split
(
"; "
);
QString
errorMessage
=
QString
::
fromUtf8
(
payload
);
// Finally we create the cookies
for
(
int
i
=
0
;
i
<
qslCookieVals
.
size
();
i
++
)
{
QString
cookieString
=
qslCookieVals
.
at
(
i
);
qDebug
()
<<
"qslCookieVals.at(i): "
<<
cookieString
.
replace
(
"
\"
"
,
""
);
QStringList
qslCrntCookie
=
cookieString
.
split
(
"="
);
QNetworkCookie
crntCookie
;
if
(
qslCrntCookie
.
length
()
==
2
)
crntCookie
=
QNetworkCookie
(
qslCrntCookie
.
at
(
0
).
toAscii
().
constData
(),
qslCrntCookie
.
at
(
1
).
toAscii
().
constData
());
else
crntCookie
=
QNetworkCookie
(
qslCrntCookie
.
at
(
0
).
toAscii
().
constData
());
cookiesList
<<
crntCookie
;
}
if
(
errorMessage
.
length
()
==
0
)
// Set the cookiejar : it set the cookies that will be sent with every packet.
UBApplication
::
showMessage
(
tr
(
"Error while publishing document to %1"
)
qDebug
()
<<
reply
->
url
().
toString
();
.
arg
(
UBSettings
::
settings
()
->
uniboardWebUrl
->
get
().
toString
()),
false
);
mpCookieJar
->
setCookiesFromUrl
(
cookiesList
,
reply
->
url
());
else
mpNetworkMgr
->
setCookieJar
(
mpCookieJar
);
UBApplication
::
showMessage
(
tr
(
"Error while publishing document to %1 : (%2)"
)
bCookieSet
=
true
;
.
arg
(
UBSettings
::
settings
()
->
uniboardWebUrl
->
get
().
toString
())
.
arg
(
errorMessage
),
false
);
}
}
QApplication
::
restoreOverrideCursor
();
if
(
response
.
isEmpty
()){
emit
loginDone
();
}
else
{
// Display the iframe
mpWebView
->
setHtml
(
response
,
QUrl
(
"http://sankore.devxwiki.com/xwiki/bin/view/Test/FileUpload"
));
UBApplication
::
applicationController
->
showSankoreWebDocument
();
deleteLater
();
}
}
}
void
UBDocumentPublisher
::
sendUbw
()
UBDocumentPublishingDialog
::
UBDocumentPublishingDialog
(
QWidget
*
parent
)
:
QDialog
(
parent
)
{
{
Ui
::
documentPublishingDialog
::
setupUi
(
this
);
if
(
QFile
::
exists
(
mTmpZipFile
))
{
QFile
f
(
mTmpZipFile
);
if
(
f
.
open
(
QIODevice
::
ReadOnly
))
{
QByteArray
ba
=
f
.
readAll
();
QString
boundary
,
data
,
multipartHeader
;
QByteArray
datatoSend
;
boundary
=
"---WebKitFormBoundaryDKBTgA53MiyWrzLY"
;
multipartHeader
=
"multipart/form-data; boundary="
+
boundary
;
data
=
"--"
+
boundary
+
mCrlf
;
data
+=
"Content-Disposition: form-data; name=
\"
file
\"
; filename=
\"
"
+
f
.
fileName
()
+
"
\"
"
+
mCrlf
;
data
+=
"Content-Type: application/octet-stream"
+
mCrlf
+
mCrlf
;
datatoSend
=
data
.
toAscii
();
// convert data string to byte array for request
datatoSend
+=
ba
;
datatoSend
+=
mCrlf
.
toAscii
();
datatoSend
+=
QString
(
"--%0--%1"
).
arg
(
boundary
).
arg
(
mCrlf
).
toAscii
();
QNetworkRequest
request
(
QUrl
(
"http://sankore.devxwiki.com/xwiki/bin/view/Test/FileUpload"
));
request
.
setHeader
(
QNetworkRequest
::
ContentTypeHeader
,
multipartHeader
);
request
.
setHeader
(
QNetworkRequest
::
ContentLengthHeader
,
datatoSend
.
size
());
request
.
setRawHeader
(
"Accept"
,
"application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
);
request
.
setRawHeader
(
"Accept-Language"
,
"en-US,*"
);
request
.
setRawHeader
(
"Referer"
,
"http://sankore.devxwiki.com/xwiki/bin/view/Test/FileUpload"
);
request
.
setRawHeader
(
"Origin"
,
"http://sankore.devxwiki.com"
);
QString
b64Auth
=
getBase64Of
(
QString
(
"%0:%1"
).
arg
(
mUsername
).
arg
(
mPassword
));
request
.
setRawHeader
(
"Authorization"
,
QString
(
"Basic %0"
).
arg
(
b64Auth
).
toAscii
().
constData
());
// Send the file
mpNetworkMgr
->
post
(
request
,
datatoSend
);
}
}
}
connect
(
dialogButtons
,
SIGNAL
(
accepted
()),
this
,
SLOT
(
accept
()));
QString
UBDocumentPublisher
::
getBase64Of
(
QString
stringToEncode
)
connect
(
dialogButtons
,
SIGNAL
(
rejected
()),
this
,
SLOT
(
reject
()));
{
return
stringToEncode
.
toAscii
().
toBase64
();
}
connect
(
title
,
SIGNAL
(
textChanged
(
const
QString
&
)),
this
,
SLOT
(
updateUIState
(
const
QString
&
)));
void
UBDocumentPublisher
::
onLinkClicked
(
const
QUrl
&
url
)
connect
(
email
,
SIGNAL
(
textChanged
(
const
QString
&
)),
this
,
SLOT
(
updateUIState
(
const
QString
&
)));
{
// [Basic Auth] Here we interpret the link and send the request with the basic auth header.
QNetworkRequest
request
;
request
.
setUrl
(
url
);
QString
b64Auth
=
getBase64Of
(
QString
(
"%0:%1"
).
arg
(
mUsername
).
arg
(
mPassword
));
request
.
setRawHeader
(
"Authorization"
,
QString
(
"Basic %0"
).
arg
(
b64Auth
).
toAscii
().
constData
());
mpNetworkMgr
->
get
(
request
);
}
dialogButtons
->
button
(
QDialogButtonBox
::
Ok
)
->
setEnabled
(
false
);
void
UBDocumentPublisher
::
onLoadFinished
(
bool
result
)
dialogButtons
->
button
(
QDialogButtonBox
::
Ok
)
->
setText
(
tr
(
"Publish"
));
{
Q_UNUSED
(
result
);
// [Basic Auth] This line says: if the user click on a link, do not interpret it.
mpWebView
->
page
()
->
setLinkDelegationPolicy
(
QWebPage
::
DelegateAllLinks
);
}
}
void
UBDocumentPublishingDialog
::
updateUIState
(
const
QString
&
string
)
{
Q_UNUSED
(
string
);
bool
ok
=
title
->
text
().
length
()
>
0
&&
email
->
text
().
length
()
>
0
;
dialogButtons
->
button
(
QDialogButtonBox
::
Ok
)
->
setEnabled
(
ok
);
}
src/adaptors/publishing/UBDocumentPublisher.h
View file @
30b87f02
...
@@ -10,74 +10,56 @@
...
@@ -10,74 +10,56 @@
class
UBDocumentProxy
;
class
UBDocumentProxy
;
class
UBServerXMLHttpRequest
;
class
UBServerXMLHttpRequest
;
class
UBGraphicsW3CWidgetItem
;
class
UBGraphicsW3CWidgetItem
;
class
QWebView
;
class
UBDocumentPublisher
:
public
UBAbstractPublisher
class
UBDocumentPublisher
:
public
UBAbstractPublisher
{
{
Q_OBJECT
;
Q_OBJECT
;
public
:
public
:
explicit
UBDocumentPublisher
(
UBDocumentProxy
*
sourceDocument
,
QObject
*
parent
=
0
);
explicit
UBDocumentPublisher
(
UBDocumentProxy
*
sourceDocument
,
QObject
*
parent
=
0
);
virtual
~
UBDocumentPublisher
();
virtual
~
UBDocumentPublisher
();
void
publish
();
void
publish
();
protected
:
signals
:
// not needed as we do not publish svg file anymore
void
loginDone
();
//virtual void rasterizePDF();
//virtual void rasterizeSVGImages();
//virtual void updateSVGForWidget(int sceneIndex);
virtual
void
updateGoogleMapApiKey
();
protected
:
virtual
void
rasterizeScenes
();
virtual
void
updateGoogleMapApiKey
();
virtual
void
rasterizeScenes
();
virtual
void
upgradeDocumentForPublishing
();
virtual
void
generateWidgetPropertyScript
(
UBGraphicsW3CWidgetItem
*
widgetItem
,
int
pageNumber
);
virtual
void
upgradeDocumentForPublishing
();
private
slots
:
virtual
void
generateWidgetPropertyScript
(
UBGraphicsW3CWidgetItem
*
widgetItem
,
int
pageNumber
);
void
onFinished
(
QNetworkReply
*
reply
);
void
onLinkClicked
(
const
QUrl
&
url
);
void
onLoadFinished
(
bool
result
);
void
sendZipToUniboardWeb
(
const
QString
&
zipFile
,
const
QUuid
&
publishingUuid
);
private
slots
:
private
:
void
postDocument
(
const
QUuid
&
tokenUuid
,
const
QString
&
encryptedBase64Token
);
void
init
(
);
void
uploadProgress
(
qint64
,
qint64
);
void
sendUbw
(
);
void
postZipUploadResponse
(
bool
,
const
QByteArray
&
);
QString
getBase64Of
(
QString
stringToEncode
);
private
:
QWebView
*
mpWebView
;
QHBoxLayout
*
mpLayout
;
QNetworkAccessManager
*
mpNetworkMgr
;
QNetworkCookieJar
*
mpCookieJar
;
QString
mUsername
;
QString
mPassword
;
QString
mCrlf
;
bool
bCookieSet
;
UBDocumentProxy
*
mSourceDocument
;
void
buildUbwFile
()
;
UBDocumentProxy
*
mPublishingDocument
;
QString
mTmpZipFile
;
UBServerXMLHttpRequest
*
mUploadRequest
;
UBDocumentProxy
*
mSourceDocument
;
UBDocumentProxy
*
mPublishingDocument
;
QString
mTitle
;
QString
mAuthor
;
QString
mDescription
;
QString
mEMail
;
bool
mAttachPDF
;
bool
mAttachUBZ
;
QUrl
mPublishingUrl
;
QString
mPublishingServiceUrl
;
QUuid
mAuthenticationUuid
;
QString
mAuthenticationBase64Token
;
};
class
UBDocumentPublishingDialog
:
public
QDialog
,
public
Ui
::
documentPublishingDialog
{
Q_OBJECT
;
public
:
UBDocumentPublishingDialog
(
QWidget
*
parent
=
0
);
~
UBDocumentPublishingDialog
(){}
private
slots
:
void
updateUIState
(
const
QString
&
string
);
};
};
#endif // UBDOCUMENTPUBLISHER_H
#endif // UBDOCUMENTPUBLISHER_H
src/board/UBBoardPaletteManager.cpp
View file @
30b87f02
...
@@ -152,7 +152,7 @@ void UBBoardPaletteManager::setupPalettes()
...
@@ -152,7 +152,7 @@ void UBBoardPaletteManager::setupPalettes()
addItemActions
<<
UBApplication
::
mainWindow
->
actionAddItemToCurrentPage
;
addItemActions
<<
UBApplication
::
mainWindow
->
actionAddItemToCurrentPage
;
addItemActions
<<
UBApplication
::
mainWindow
->
actionAddItemToNewPage
;
addItemActions
<<
UBApplication
::
mainWindow
->
actionAddItemToNewPage
;
addItemActions
<<
UBApplication
::
mainWindow
->
actionAddItemToLibrary
;
addItemActions
<<
UBApplication
::
mainWindow
->
actionAddItemToLibrary
;
//
addItemActions << UBApplication::mainWindow->actionShareItemOnWeb;
addItemActions
<<
UBApplication
::
mainWindow
->
actionShareItemOnWeb
;
mAddItemPalette
=
new
UBActionPalette
(
addItemActions
,
Qt
::
Horizontal
,
0
);
mAddItemPalette
=
new
UBActionPalette
(
addItemActions
,
Qt
::
Horizontal
,
0
);
mAddItemPalette
->
setButtonIconSize
(
QSize
(
128
,
128
));
mAddItemPalette
->
setButtonIconSize
(
QSize
(
128
,
128
));
...
@@ -306,7 +306,7 @@ void UBBoardPaletteManager::connectPalettes()
...
@@ -306,7 +306,7 @@ void UBBoardPaletteManager::connectPalettes()
connect
(
UBApplication
::
mainWindow
->
actionAddItemToCurrentPage
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
addItemToCurrentPage
()));
connect
(
UBApplication
::
mainWindow
->
actionAddItemToCurrentPage
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
addItemToCurrentPage
()));
connect
(
UBApplication
::
mainWindow
->
actionAddItemToNewPage
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
addItemToNewPage
()));
connect
(
UBApplication
::
mainWindow
->
actionAddItemToNewPage
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
addItemToNewPage
()));
connect
(
UBApplication
::
mainWindow
->
actionAddItemToLibrary
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
addItemToLibrary
()));
connect
(
UBApplication
::
mainWindow
->
actionAddItemToLibrary
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
addItemToLibrary
()));
//
connect(UBApplication::mainWindow->actionShareItemOnWeb, SIGNAL(triggered()), this, SLOT(shareItemOnWeb()));
connect
(
UBApplication
::
mainWindow
->
actionShareItemOnWeb
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
shareItemOnWeb
()));
connect
(
UBApplication
::
mainWindow
->
actionEraseItems
,
SIGNAL
(
triggered
()),
mErasePalette
,
SLOT
(
close
()));
connect
(
UBApplication
::
mainWindow
->
actionEraseItems
,
SIGNAL
(
triggered
()),
mErasePalette
,
SLOT
(
close
()));
connect
(
UBApplication
::
mainWindow
->
actionEraseAnnotations
,
SIGNAL
(
triggered
()),
mErasePalette
,
SLOT
(
close
()));
connect
(
UBApplication
::
mainWindow
->
actionEraseAnnotations
,
SIGNAL
(
triggered
()),
mErasePalette
,
SLOT
(
close
()));
...
...
src/core/UBApplication.cpp
View file @
30b87f02
...
@@ -53,7 +53,6 @@ UBApplicationController* UBApplication::applicationController = 0;
...
@@ -53,7 +53,6 @@ UBApplicationController* UBApplication::applicationController = 0;
UBBoardController
*
UBApplication
::
boardController
=
0
;
UBBoardController
*
UBApplication
::
boardController
=
0
;
UBWebController
*
UBApplication
::
webController
=
0
;
UBWebController
*
UBApplication
::
webController
=
0
;
UBDocumentController
*
UBApplication
::
documentController
=
0
;
UBDocumentController
*
UBApplication
::
documentController
=
0
;
//UBSoftwareUpdateController* UBApplication::softwareUpdateController = 0;
UniboardSankoreTransition
*
UBApplication
::
mUniboardSankoreTransition
=
0
;
UniboardSankoreTransition
*
UBApplication
::
mUniboardSankoreTransition
=
0
;
UBMainWindow
*
UBApplication
::
mainWindow
=
0
;
UBMainWindow
*
UBApplication
::
mainWindow
=
0
;
...
@@ -91,9 +90,8 @@ static OSStatus ub_appleEventProcessor(const AppleEvent *ae, AppleEvent *event,
...
@@ -91,9 +90,8 @@ static OSStatus ub_appleEventProcessor(const AppleEvent *ae, AppleEvent *event,
#endif
#endif
UBApplication
::
UBApplication
(
const
QString
&
id
,
int
&
argc
,
char
**
argv
)
UBApplication
::
UBApplication
(
const
QString
&
id
,
int
&
argc
,
char
**
argv
)
:
QtSingleApplication
(
id
,
argc
,
argv
),
:
QtSingleApplication
(
id
,
argc
,
argv
),
mPreferencesController
(
NULL
)
mPreferencesController
(
NULL
)
{
{
staticMemoryCleaner
=
new
QObject
(
0
);
// deleted in UBApplication destructor
staticMemoryCleaner
=
new
QObject
(
0
);
// deleted in UBApplication destructor
...
@@ -186,11 +184,11 @@ UBApplication::~UBApplication()
...
@@ -186,11 +184,11 @@ UBApplication::~UBApplication()
delete
mUniboardSankoreTransition
;
delete
mUniboardSankoreTransition
;
mUniboardSankoreTransition
=
0
;
mUniboardSankoreTransition
=
0
;
if
(
mPreferencesController
)
if
(
mPreferencesController
)
{
{
delete
mPreferencesController
;
delete
mPreferencesController
;
mPreferencesController
=
0
;
mPreferencesController
=
0
;
}
}
}
}
int
UBApplication
::
exec
(
const
QString
&
pFileToImport
)
int
UBApplication
::
exec
(
const
QString
&
pFileToImport
)
...
@@ -343,6 +341,10 @@ void UBApplication::showDocument()
...
@@ -343,6 +341,10 @@ void UBApplication::showDocument()
applicationController
->
showDocument
();
applicationController
->
showDocument
();
}
}
void
UBApplication
::
showSankoreWebDocument
()
{
applicationController
->
showSankoreWebDocument
();
}
int
UBApplication
::
toolBarHeight
()
int
UBApplication
::
toolBarHeight
()
{
{
...
...
src/core/UBApplication.h
View file @
30b87f02
...
@@ -88,6 +88,7 @@ class UBApplication : public QtSingleApplication
...
@@ -88,6 +88,7 @@ class UBApplication : public QtSingleApplication
void
showBoard
();
void
showBoard
();
void
showInternet
();
void
showInternet
();
void
showDocument
();
void
showDocument
();
void
showSankoreWebDocument
();
void
toolBarPositionChanged
(
QVariant
topOrBottom
);
void
toolBarPositionChanged
(
QVariant
topOrBottom
);
void
toolBarDisplayTextChanged
(
QVariant
display
);
void
toolBarDisplayTextChanged
(
QVariant
display
);
...
...
src/core/UBApplicationController.cpp
View file @
30b87f02
...
@@ -325,7 +325,7 @@ void UBApplicationController::showBoard()
...
@@ -325,7 +325,7 @@ void UBApplicationController::showBoard()
if
(
UBApplication
::
boardController
)
if
(
UBApplication
::
boardController
)
UBApplication
::
boardController
->
show
();
UBApplication
::
boardController
->
show
();
UBPlatformUtils
::
setDesktopMode
(
false
);
UBPlatformUtils
::
setDesktopMode
(
false
);
mUninoteController
->
hideWindow
();
mUninoteController
->
hideWindow
();
mMainWindow
->
show
();
mMainWindow
->
show
();
...
@@ -396,6 +396,32 @@ void UBApplicationController::showDocument()
...
@@ -396,6 +396,32 @@ void UBApplicationController::showDocument()
emit
mainModeChanged
(
Document
);
emit
mainModeChanged
(
Document
);
}
}
void
UBApplicationController
::
showSankoreWebDocument
()
{
mMainWindow
->
webToolBar
->
hide
();
mMainWindow
->
boardToolBar
->
hide
();
mMainWindow
->
tutorialToolBar
->
hide
();
mMainWindow
->
documentToolBar
->
show
();
mMainMode
=
WebDocument
;
adaptToolBar
();
mirroringEnabled
(
false
);
mMainWindow
->
switchToSankoreWebDocumentWidget
();
UBApplication
::
documentController
->
hide
();
mMainWindow
->
show
();
mUninoteController
->
hideWindow
();
emit
mainModeChanged
(
WebDocument
);
}
void
UBApplicationController
::
showDesktop
(
bool
dontSwitchFrontProcess
)
void
UBApplicationController
::
showDesktop
(
bool
dontSwitchFrontProcess
)
{
{
...
...
src/core/UBApplicationController.h
View file @
30b87f02
...
@@ -53,6 +53,8 @@ class UBApplicationController : public QObject
...
@@ -53,6 +53,8 @@ class UBApplicationController : public QObject
void
showDocument
();
void
showDocument
();
void
showSankoreWebDocument
();
void
showMessage
(
const
QString
&
message
,
bool
showSpinningWheel
);
void
showMessage
(
const
QString
&
message
,
bool
showSpinningWheel
);
void
importFile
(
const
QString
&
pFilePath
);
void
importFile
(
const
QString
&
pFilePath
);
...
@@ -69,7 +71,7 @@ class UBApplicationController : public QObject
...
@@ -69,7 +71,7 @@ class UBApplicationController : public QObject
enum
MainMode
enum
MainMode
{
{
Board
=
0
,
Internet
,
Document
,
Tutorial
,
ParaschoolEditor
Board
=
0
,
Internet
,
Document
,
Tutorial
,
ParaschoolEditor
,
WebDocument
};
};
MainMode
displayMode
()
MainMode
displayMode
()
...
...
src/core/UBDocumentManager.cpp
View file @
30b87f02
...
@@ -56,8 +56,10 @@ UBDocumentManager::UBDocumentManager(QObject *parent)
...
@@ -56,8 +56,10 @@ UBDocumentManager::UBDocumentManager(QObject *parent)
mExportAdaptors
.
append
(
exportFullPdf
);
mExportAdaptors
.
append
(
exportFullPdf
);
UBExportDocument
*
exportDocument
=
new
UBExportDocument
(
this
);
UBExportDocument
*
exportDocument
=
new
UBExportDocument
(
this
);
mExportAdaptors
.
append
(
exportDocument
);
mExportAdaptors
.
append
(
exportDocument
);
UBExportWeb
*
exportWeb
=
new
UBExportWeb
(
this
);
// UBExportWeb* exportWeb = new UBExportWeb(this);
mExportAdaptors
.
append
(
exportWeb
);
// mExportAdaptors.append(exportWeb);
UBWebPublisher
*
webPublished
=
new
UBWebPublisher
(
this
);
mExportAdaptors
.
append
(
webPublished
);
UBImportDocument
*
documentImport
=
new
UBImportDocument
(
this
);
UBImportDocument
*
documentImport
=
new
UBImportDocument
(
this
);
mImportAdaptors
.
append
(
documentImport
);
mImportAdaptors
.
append
(
documentImport
);
...
...
src/document/UBDocumentController.h
View file @
30b87f02
...
@@ -33,10 +33,10 @@ class UBDocumentController : public QObject
...
@@ -33,10 +33,10 @@ class UBDocumentController : public QObject
QWidget
*
controlView
();
QWidget
*
controlView
();
UBDocumentProxyTreeItem
*
findDocument
(
UBDocumentProxy
*
proxy
);
UBDocumentProxyTreeItem
*
findDocument
(
UBDocumentProxy
*
proxy
);
bool
addFileToDocument
(
UBDocumentProxy
*
document
);
bool
addFileToDocument
(
UBDocumentProxy
*
document
);
UBDocumentProxy
*
getCurrentDocument
();
UBDocumentProxy
*
getCurrentDocument
();
signals
:
signals
:
void
refreshThumbnails
();
void
refreshThumbnails
();
void
exportDone
();
void
exportDone
();
public
slots
:
public
slots
:
...
@@ -91,7 +91,7 @@ class UBDocumentController : public QObject
...
@@ -91,7 +91,7 @@ class UBDocumentController : public QObject
UBDocumentToolsPalette
*
mToolsPalette
;
UBDocumentToolsPalette
*
mToolsPalette
;
bool
mToolsPalettePositionned
;
bool
mToolsPalettePositionned
;
UBDocumentGroupTreeItem
*
mTrashTi
;
UBDocumentGroupTreeItem
*
mTrashTi
;
UBDocumentProxy
*
mCurrentDocument
;
UBDocumentProxy
*
mCurrentDocument
;
private
slots
:
private
slots
:
void
documentZoomSliderValueChanged
(
int
value
);
void
documentZoomSliderValueChanged
(
int
value
);
...
...
src/gui/UBMainWindow.cpp
View file @
30b87f02
...
@@ -14,6 +14,7 @@ UBMainWindow::UBMainWindow(QWidget *parent, Qt::WindowFlags flags)
...
@@ -14,6 +14,7 @@ UBMainWindow::UBMainWindow(QWidget *parent, Qt::WindowFlags flags)
,
mBoardWidget
(
0
)
,
mBoardWidget
(
0
)
,
mWebWidget
(
0
)
,
mWebWidget
(
0
)
,
mDocumentsWidget
(
0
)
,
mDocumentsWidget
(
0
)
,
mSankoreWebDocumentWidget
(
0
)
{
{
Ui
::
MainWindow
::
setupUi
(
this
);
Ui
::
MainWindow
::
setupUi
(
this
);
...
@@ -91,6 +92,19 @@ void UBMainWindow::switchToDocumentsWidget()
...
@@ -91,6 +92,19 @@ void UBMainWindow::switchToDocumentsWidget()
}
}
}
}
void
UBMainWindow
::
addSankoreWebDocumentWidget
(
QWebView
*
pWidget
)
{
if
(
!
mSankoreWebDocumentWidget
){
mSankoreWebDocumentWidget
=
pWidget
;
mStackedLayout
->
addWidget
(
mSankoreWebDocumentWidget
);
}
}
void
UBMainWindow
::
switchToSankoreWebDocumentWidget
()
{
if
(
mSankoreWebDocumentWidget
)
mStackedLayout
->
setCurrentWidget
(
mSankoreWebDocumentWidget
);
}
void
UBMainWindow
::
keyPressEvent
(
QKeyEvent
*
event
)
void
UBMainWindow
::
keyPressEvent
(
QKeyEvent
*
event
)
{
{
QMainWindow
::
keyPressEvent
(
event
);
QMainWindow
::
keyPressEvent
(
event
);
...
...
src/gui/UBMainWindow.h
View file @
30b87f02
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
#include <QMainWindow>
#include <QMainWindow>
#include <QWidget>
#include <QWidget>
#include <QWebView>
class
QStackedLayout
;
class
QStackedLayout
;
...
@@ -27,6 +28,9 @@ class UBMainWindow : public QMainWindow, public Ui::MainWindow
...
@@ -27,6 +28,9 @@ class UBMainWindow : public QMainWindow, public Ui::MainWindow
void
addDocumentsWidget
(
QWidget
*
pWidget
);
void
addDocumentsWidget
(
QWidget
*
pWidget
);
void
switchToDocumentsWidget
();
void
switchToDocumentsWidget
();
void
addSankoreWebDocumentWidget
(
QWebView
*
pWidget
);
void
switchToSankoreWebDocumentWidget
();
public
slots
:
public
slots
:
void
onExportDone
();
void
onExportDone
();
...
@@ -45,6 +49,7 @@ class UBMainWindow : public QMainWindow, public Ui::MainWindow
...
@@ -45,6 +49,7 @@ class UBMainWindow : public QMainWindow, public Ui::MainWindow
QWidget
*
mBoardWidget
;
QWidget
*
mBoardWidget
;
QWidget
*
mWebWidget
;
QWidget
*
mWebWidget
;
QWidget
*
mDocumentsWidget
;
QWidget
*
mDocumentsWidget
;
QWebView
*
mSankoreWebDocumentWidget
;
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment