Merge branch 'dev' into 1.4-dev

preferencesAboutTextFull
Craig Watson 8 years ago
commit 32af9631d3
  1. 2
      OpenBoard.pro
  2. 9
      src/adaptors/UBExportFullPDF.cpp
  3. 50
      src/adaptors/UBSvgSubsetAdaptor.cpp
  4. 6
      src/adaptors/UBSvgSubsetAdaptor.h
  5. 24
      src/board/UBBoardPaletteManager.cpp
  6. 4
      src/core/UBSettings.cpp
  7. 2
      src/core/UBSettings.h
  8. 11
      src/document/UBDocumentProxy.cpp
  9. 5
      src/document/UBDocumentProxy.h
  10. 15
      src/domain/UBGraphicsScene.cpp
  11. 2
      src/domain/UBGraphicsScene.h

@ -10,7 +10,7 @@ CONFIG += debug_and_release \
VERSION_MAJ = 1 VERSION_MAJ = 1
VERSION_MIN = 3 VERSION_MIN = 3
VERSION_PATCH = 1 VERSION_PATCH = 3
VERSION_TYPE = r # a = alpha, b = beta, rc = release candidate, r = release, other => error VERSION_TYPE = r # a = alpha, b = beta, rc = release candidate, r = release, other => error
VERSION_BUILD = 0 VERSION_BUILD = 0

@ -182,7 +182,7 @@ bool UBExportFullPDF::persistsDocument(UBDocumentProxy* pDocumentProxy, const QS
{ {
QString pdfName = UBPersistenceManager::objectDirectory + "/" + pdfItem->fileUuid().toString() + ".pdf"; QString pdfName = UBPersistenceManager::objectDirectory + "/" + pdfItem->fileUuid().toString() + ".pdf";
QString backgroundPath = pDocumentProxy->persistencePath() + "/" + pdfName; QString backgroundPath = pDocumentProxy->persistencePath() + "/" + pdfName;
QRectF annotationsRect = scene->itemsBoundingRect(); QRectF annotationsRect = scene->annotationsBoundingRect();
// Original datas // Original datas
double xAnnotation = qRound(annotationsRect.x()); double xAnnotation = qRound(annotationsRect.x());
@ -192,8 +192,8 @@ bool UBExportFullPDF::persistsDocument(UBDocumentProxy* pDocumentProxy, const QS
double hPdf = qRound(pdfItem->sceneBoundingRect().height()); double hPdf = qRound(pdfItem->sceneBoundingRect().height());
// Exportation-transformed datas // Exportation-transformed datas
double hScaleFactor = pageSize.width()/scene->itemsBoundingRect().width(); double hScaleFactor = pageSize.width()/annotationsRect.width();
double vScaleFactor = pageSize.height()/scene->itemsBoundingRect().height(); double vScaleFactor = pageSize.height()/annotationsRect.height();
double scaleFactor = qMin(hScaleFactor, vScaleFactor); double scaleFactor = qMin(hScaleFactor, vScaleFactor);
double xAnnotationsOffset = 0; double xAnnotationsOffset = 0;
@ -210,8 +210,7 @@ bool UBExportFullPDF::persistsDocument(UBDocumentProxy* pDocumentProxy, const QS
// If the PDF was scaled when added to the scene (e.g if it was loaded from a document with a different DPI // If the PDF was scaled when added to the scene (e.g if it was loaded from a document with a different DPI
// than the current one), it should also be scaled here. // than the current one), it should also be scaled here.
qreal currentDpi = (UBApplication::desktop()->physicalDpiX() + UBApplication::desktop()->physicalDpiY()) / 2; qreal pdfScale = pdfItem->scale();
qreal pdfScale = qreal(UBSettings::pageDpi)/currentDpi;
TransformationDescription pdfTransform(xPdfOffset, yPdfOffset, scaleFactor * pdfScale, 0); TransformationDescription pdfTransform(xPdfOffset, yPdfOffset, scaleFactor * pdfScale, 0);
TransformationDescription annotationTransform(xAnnotationsOffset, yAnnotationsOffset, 1, 0); TransformationDescription annotationTransform(xAnnotationsOffset, yAnnotationsOffset, 1, 0);

@ -334,7 +334,7 @@ QUuid UBSvgSubsetAdaptor::sceneUuid(UBDocumentProxy* proxy, const int pageIndex)
UBGraphicsScene* UBSvgSubsetAdaptor::loadScene(UBDocumentProxy* proxy, const QByteArray& pArray) UBGraphicsScene* UBSvgSubsetAdaptor::loadScene(UBDocumentProxy* proxy, const QByteArray& pArray)
{ {
UBSvgSubsetReader reader(proxy, UBTextTools::cleanHtmlCData(QString(pArray)).toUtf8()); UBSvgSubsetReader reader(proxy, UBTextTools::cleanHtmlCData(QString(pArray)).toUtf8());
return reader.loadScene(); return reader.loadScene(proxy);
} }
UBSvgSubsetAdaptor::UBSvgSubsetReader::UBSvgSubsetReader(UBDocumentProxy* pProxy, const QByteArray& pXmlData) UBSvgSubsetAdaptor::UBSvgSubsetReader::UBSvgSubsetReader(UBDocumentProxy* pProxy, const QByteArray& pXmlData)
@ -347,13 +347,14 @@ UBSvgSubsetAdaptor::UBSvgSubsetReader::UBSvgSubsetReader(UBDocumentProxy* pProxy
} }
UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene(UBDocumentProxy* proxy)
{ {
qDebug() << "loadScene() : starting reading..."; qDebug() << "loadScene() : starting reading...";
QTime time; QTime time;
time.start(); time.start();
mScene = 0; mScene = 0;
UBGraphicsWidgetItem *currentWidget = 0; UBGraphicsWidgetItem *currentWidget = 0;
bool pageDpiSpecified = true;
mFileVersion = 40100; // default to 4.1.0 mFileVersion = 40100; // default to 4.1.0
@ -435,9 +436,12 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
QStringRef pageDpi = mXmlReader.attributes().value("pageDpi"); QStringRef pageDpi = mXmlReader.attributes().value("pageDpi");
if (!pageDpi.isNull()) if (!pageDpi.isNull())
UBSettings::pageDpi = pageDpi.toInt(); proxy->setPageDpi(pageDpi.toInt());
else
UBSettings::pageDpi = (UBApplication::desktop()->physicalDpiX() + UBApplication::desktop()->physicalDpiY())/2; else if (proxy->pageDpi() == 0) {
proxy->setPageDpi((UBApplication::desktop()->physicalDpiX() + UBApplication::desktop()->physicalDpiY())/2);
pageDpiSpecified = false;
}
bool darkBackground = false; bool darkBackground = false;
bool crossedBackground = false; bool crossedBackground = false;
@ -768,9 +772,22 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
{ {
QDesktopWidget* desktop = UBApplication::desktop(); QDesktopWidget* desktop = UBApplication::desktop();
qreal currentDpi = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2; qreal currentDpi = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
qDebug() << "currentDpi (" << desktop->physicalDpiX() << " + " << desktop->physicalDpiY() << ")/2 = " << currentDpi; // qDebug() << "currentDpi (" << desktop->physicalDpiX() << " + " << desktop->physicalDpiY() << ")/2 = " << currentDpi;
qreal pdfScale = qreal(UBSettings::pageDpi)/currentDpi; qreal pdfScale = qreal(proxy->pageDpi())/currentDpi;
qDebug() << "pdfScale " << pdfScale; // qDebug() << "pdfScale " << pdfScale;
// If the PDF is in the background, it occupies the whole page; so we can simply
// use that information to calculate its scale.
if (isBackground) {
qreal pageWidth = mScene->nominalSize().width();
qreal pageHeight = mScene->nominalSize().height();
qreal scaleX = pageWidth / pdfItem->sceneBoundingRect().width();
qreal scaleY = pageHeight / pdfItem->sceneBoundingRect().height();
pdfScale = (scaleX+scaleY)/2.;
}
pdfItem->setScale(pdfScale); pdfItem->setScale(pdfScale);
pdfItem->setFlag(QGraphicsItem::ItemIsMovable, true); pdfItem->setFlag(QGraphicsItem::ItemIsMovable, true);
pdfItem->setFlag(QGraphicsItem::ItemIsSelectable, true); pdfItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
@ -829,7 +846,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
{ {
QDesktopWidget* desktop = UBApplication::desktop(); QDesktopWidget* desktop = UBApplication::desktop();
qreal currentDpi = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2; qreal currentDpi = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
qreal textSizeMultiplier = qreal(UBSettings::pageDpi)/currentDpi; qreal textSizeMultiplier = qreal(proxy->pageDpi())/currentDpi;
//textDelegate->scaleTextSize(textSizeMultiplier); //textDelegate->scaleTextSize(textSizeMultiplier);
} }
@ -1013,7 +1030,7 @@ QGraphicsItem *UBSvgSubsetAdaptor::UBSvgSubsetReader::readElementFromGroup()
void UBSvgSubsetAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, const int pageIndex) void UBSvgSubsetAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, const int pageIndex)
{ {
UBSvgSubsetWriter writer(proxy, pScene, pageIndex); UBSvgSubsetWriter writer(proxy, pScene, pageIndex);
writer.persistScene(pageIndex); writer.persistScene(proxy, pageIndex);
} }
@ -1027,7 +1044,7 @@ UBSvgSubsetAdaptor::UBSvgSubsetWriter::UBSvgSubsetWriter(UBDocumentProxy* proxy,
} }
void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement() void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement(UBDocumentProxy* proxy)
{ {
mXmlWriter.writeStartElement("svg"); mXmlWriter.writeStartElement("svg");
@ -1053,10 +1070,11 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement()
QDesktopWidget* desktop = UBApplication::desktop(); QDesktopWidget* desktop = UBApplication::desktop();
if (UBSettings::pageDpi == 0) if (proxy->pageDpi() == 0)
UBSettings::pageDpi = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2; proxy->setPageDpi((desktop->physicalDpiX() + desktop->physicalDpiY()) / 2);
mXmlWriter.writeAttribute("pageDpi", QString::number(proxy->pageDpi()));
mXmlWriter.writeAttribute("pageDpi", QString::number(UBSettings::pageDpi));
mXmlWriter.writeStartElement("rect"); mXmlWriter.writeStartElement("rect");
mXmlWriter.writeAttribute("fill", mScene->isDarkBackground() ? "black" : "white"); mXmlWriter.writeAttribute("fill", mScene->isDarkBackground() ? "black" : "white");
@ -1068,7 +1086,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement()
mXmlWriter.writeEndElement(); mXmlWriter.writeEndElement();
} }
bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(UBDocumentProxy* proxy, int pageIndex)
{ {
Q_UNUSED(pageIndex); Q_UNUSED(pageIndex);
@ -1089,7 +1107,7 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
mXmlWriter.writeNamespace(UBSettings::uniboardDocumentNamespaceUri, "ub"); mXmlWriter.writeNamespace(UBSettings::uniboardDocumentNamespaceUri, "ub");
mXmlWriter.writeNamespace(nsXHtml, "xhtml"); mXmlWriter.writeNamespace(nsXHtml, "xhtml");
writeSvgElement(); writeSvgElement(proxy);
// Get the items from the scene // Get the items from the scene
QList<QGraphicsItem*> items = mScene->items(); QList<QGraphicsItem*> items = mScene->items();

@ -114,7 +114,7 @@ class UBSvgSubsetAdaptor
virtual ~UBSvgSubsetReader(){} virtual ~UBSvgSubsetReader(){}
UBGraphicsScene* loadScene(); UBGraphicsScene* loadScene(UBDocumentProxy *proxy);
private: private:
@ -180,7 +180,7 @@ class UBSvgSubsetAdaptor
UBSvgSubsetWriter(UBDocumentProxy* proxy, UBGraphicsScene* pScene, const int pageIndex); UBSvgSubsetWriter(UBDocumentProxy* proxy, UBGraphicsScene* pScene, const int pageIndex);
bool persistScene(int pageIndex); bool persistScene(UBDocumentProxy *proxy, int pageIndex);
virtual ~UBSvgSubsetWriter(){} virtual ~UBSvgSubsetWriter(){}
@ -249,7 +249,7 @@ class UBSvgSubsetAdaptor
void protractorToSvg(UBGraphicsProtractor *item); void protractorToSvg(UBGraphicsProtractor *item);
void cacheToSvg(UBGraphicsCache* item); void cacheToSvg(UBGraphicsCache* item);
void triangleToSvg(UBGraphicsTriangle *item); void triangleToSvg(UBGraphicsTriangle *item);
void writeSvgElement(); void writeSvgElement(UBDocumentProxy *proxy);
private: private:

@ -664,11 +664,11 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
mRightPalette->assignParent(mContainer); mRightPalette->assignParent(mContainer);
mRightPalette->stackUnder(mStylusPalette); mRightPalette->stackUnder(mStylusPalette);
mLeftPalette->stackUnder(mStylusPalette); mLeftPalette->stackUnder(mStylusPalette);
if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) if (UBPlatformUtils::hasVirtualKeyboard()
{ && mKeyboardPalette != NULL
&& UBSettings::settings()->useSystemOnScreenKeyboard->get().toBool() == false)
if(mKeyboardPalette->m_isVisible)
{ {
if(mKeyboardPalette->m_isVisible) {
mKeyboardPalette->hide(); mKeyboardPalette->hide();
mKeyboardPalette->setParent(UBApplication::boardController->controlContainer()); mKeyboardPalette->setParent(UBApplication::boardController->controlContainer());
mKeyboardPalette->show(); mKeyboardPalette->show();
@ -698,7 +698,9 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
mRightPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView()); mRightPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
mStylusPalette->raise(); mStylusPalette->raise();
if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) if (UBPlatformUtils::hasVirtualKeyboard()
&& mKeyboardPalette != NULL
&& UBSettings::settings()->useSystemOnScreenKeyboard->get().toBool() == false)
{ {
if(mKeyboardPalette->m_isVisible) if(mKeyboardPalette->m_isVisible)
@ -745,7 +747,9 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
case eUBDockPaletteWidget_WEB: case eUBDockPaletteWidget_WEB:
{ {
mAddItemPalette->setParent(UBApplication::mainWindow); mAddItemPalette->setParent(UBApplication::mainWindow);
if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) if (UBPlatformUtils::hasVirtualKeyboard()
&& mKeyboardPalette != NULL
&& UBSettings::settings()->useSystemOnScreenKeyboard->get().toBool() == false)
{ {
// tmp variable? // tmp variable?
// WBBrowserWindow* brWnd = UBApplication::webController->GetCurrentWebBrowser(); // WBBrowserWindow* brWnd = UBApplication::webController->GetCurrentWebBrowser();
@ -769,7 +773,9 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
mRightPalette->setVisible(rightPaletteVisible); mRightPalette->setVisible(rightPaletteVisible);
mLeftPalette->assignParent(UBApplication::documentController->controlView()); mLeftPalette->assignParent(UBApplication::documentController->controlView());
mRightPalette->assignParent(UBApplication::documentController->controlView()); mRightPalette->assignParent(UBApplication::documentController->controlView());
if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) if (UBPlatformUtils::hasVirtualKeyboard()
&& mKeyboardPalette != NULL
&& UBSettings::settings()->useSystemOnScreenKeyboard->get().toBool() == false)
{ {
if(mKeyboardPalette->m_isVisible) if(mKeyboardPalette->m_isVisible)
@ -792,7 +798,9 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
mRightPalette->setVisible(rightPaletteVisible); mRightPalette->setVisible(rightPaletteVisible);
mLeftPalette->assignParent(0); mLeftPalette->assignParent(0);
mRightPalette->assignParent(0); mRightPalette->assignParent(0);
if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) if (UBPlatformUtils::hasVirtualKeyboard()
&& mKeyboardPalette != NULL
&& UBSettings::settings()->useSystemOnScreenKeyboard->get().toBool() == false)
{ {
if(mKeyboardPalette->m_isVisible) if(mKeyboardPalette->m_isVisible)

@ -112,8 +112,6 @@ const int UBSettings::longClickInterval = 1200;
const qreal UBSettings::minScreenRatio = 1.33; // 800/600 or 1024/768 const qreal UBSettings::minScreenRatio = 1.33; // 800/600 or 1024/768
int UBSettings::pageDpi = 0;
QStringList UBSettings::bitmapFileExtensions; QStringList UBSettings::bitmapFileExtensions;
QStringList UBSettings::vectoFileExtensions; QStringList UBSettings::vectoFileExtensions;
QStringList UBSettings::imageFileExtensions; QStringList UBSettings::imageFileExtensions;
@ -274,8 +272,6 @@ void UBSettings::init()
pageSize = new UBSetting(this, "Board", "DefaultPageSize", documentSizes.value(DocumentSizeRatio::Ratio4_3)); pageSize = new UBSetting(this, "Board", "DefaultPageSize", documentSizes.value(DocumentSizeRatio::Ratio4_3));
pageDpi = (UBApplication::desktop()->physicalDpiX() + UBApplication::desktop()->physicalDpiY())/ 2;
QStringList penLightBackgroundColors; QStringList penLightBackgroundColors;
penLightBackgroundColors << "#000000" << "#FF0000" <<"#004080" << "#008000" << "#FFDD00" << "#C87400" << "#800040" << "#008080" << "#5F2D0A" << "#FFFFFF"; penLightBackgroundColors << "#000000" << "#FF0000" <<"#004080" << "#008000" << "#FFDD00" << "#C87400" << "#800040" << "#008080" << "#5F2D0A" << "#FFFFFF";
boardPenLightBackgroundColors = new UBColorListSetting(this, "Board", "PenLightBackgroundColors", penLightBackgroundColors, 1.0); boardPenLightBackgroundColors = new UBColorListSetting(this, "Board", "PenLightBackgroundColors", penLightBackgroundColors, 1.0);

@ -232,8 +232,6 @@ class UBSettings : public QObject
static QString appPingMessage; static QString appPingMessage;
static int pageDpi;
UBSetting* productWebUrl; UBSetting* productWebUrl;
QString softwareHomeUrl; QString softwareHomeUrl;

@ -41,6 +41,7 @@
UBDocumentProxy::UBDocumentProxy() UBDocumentProxy::UBDocumentProxy()
: mPageCount(0) : mPageCount(0)
, mPageDpi(0)
{ {
init(); init();
} }
@ -48,6 +49,7 @@ UBDocumentProxy::UBDocumentProxy()
UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath) UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath)
: mPageCount(0) : mPageCount(0)
, mPageDpi(0)
{ {
init(); init();
setPersistencePath(pPersistancePath); setPersistencePath(pPersistancePath);
@ -98,6 +100,15 @@ void UBDocumentProxy::setPageCount(int pPageCount)
mPageCount = pPageCount; mPageCount = pPageCount;
} }
int UBDocumentProxy::pageDpi()
{
return mPageDpi;
}
void UBDocumentProxy::setPageDpi(int dpi)
{
mPageDpi = dpi;
}
int UBDocumentProxy::incPageCount() int UBDocumentProxy::incPageCount()
{ {

@ -79,6 +79,9 @@ class UBDocumentProxy : public QObject
int pageCount(); int pageCount();
int pageDpi();
void setPageDpi(int dpi);
protected: protected:
void setPageCount(int pPageCount); void setPageCount(int pPageCount);
int incPageCount(); int incPageCount();
@ -96,6 +99,8 @@ class UBDocumentProxy : public QObject
int mPageCount; int mPageCount;
int mPageDpi;
}; };
inline bool operator==(const UBDocumentProxy &proxy1, const UBDocumentProxy &proxy2) inline bool operator==(const UBDocumentProxy &proxy1, const UBDocumentProxy &proxy2)

@ -1811,6 +1811,21 @@ void UBGraphicsScene::deselectAllItemsExcept(QGraphicsItem* item)
} }
} }
/**
* Return the bounding rectangle of all items on the page except for tools (ruler, compass,...)
*/
QRectF UBGraphicsScene::annotationsBoundingRect() const
{
QRectF boundingRect;
foreach (QGraphicsItem *item, items()) {
if (!mTools.contains(rootItem(item)))
boundingRect |= item->sceneBoundingRect();
}
return boundingRect;
}
bool UBGraphicsScene::isEmpty() const bool UBGraphicsScene::isEmpty() const
{ {
return mItemCount == 0; return mItemCount == 0;

@ -321,6 +321,8 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
void notifyZChanged(QGraphicsItem *item, qreal zValue); void notifyZChanged(QGraphicsItem *item, qreal zValue);
void deselectAllItemsExcept(QGraphicsItem* graphicsItem); void deselectAllItemsExcept(QGraphicsItem* graphicsItem);
QRectF annotationsBoundingRect() const;
public slots: public slots:
void updateSelectionFrame(); void updateSelectionFrame();
void updateSelectionFrameWrapper(int); void updateSelectionFrameWrapper(int);

Loading…
Cancel
Save