diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index a80ef091..8c465bc3 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -42,6 +42,7 @@ #include "domain/UBGraphicsStroke.h" #include "domain/UBGraphicsStrokesGroup.h" #include "domain/UBGraphicsGroupContainerItem.h" +#include "domain/UBGraphicsGroupContainerItemDelegate.h" #include "domain/UBItem.h" #include "tools/UBGraphicsRuler.h" @@ -924,7 +925,13 @@ void UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroupRoot() } else if (mXmlReader.isStartElement()) { if (mXmlReader.name() == tGroup) { + QString ubLocked = mXmlReader.attributes().value(UBSettings::uniboardDocumentNamespaceUri, "locked").toString(); UBGraphicsGroupContainerItem *curGroup = readGroup(); + if (!ubLocked.isEmpty()) + { + bool isLocked = ubLocked.contains(xmlTrue); + curGroup->Delegate()->setLocked(isLocked); + } if (curGroup) { mScene->addGroup(curGroup); } @@ -1276,6 +1283,9 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) if (curElement.hasAttribute(aId)) { mXmlWriter.writeStartElement(curElement.tagName()); mXmlWriter.writeAttribute(aId, curElement.attribute(aId)); + if(curElement.hasAttribute("locked")){ + mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri,"locked",curElement.attribute("locked")); + } QDomElement curSubElement = curElement.firstChildElement(); while (!curSubElement.isNull()) { if (curSubElement.hasAttribute(aId)) { @@ -1320,6 +1330,13 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *gro if (!uuid.isNull()) { QDomElement curGroupElement = groupDomDocument->createElement(tGroup); curGroupElement.setAttribute(aId, uuid); + UBGraphicsGroupContainerItem* group = dynamic_cast(groupItem); + if(group && group->Delegate()){ + if(group->Delegate()->isLocked()) + curGroupElement.setAttribute("locked", xmlTrue); + else + curGroupElement.setAttribute("locked", xmlFalse); + } curParent->appendChild(curGroupElement); foreach (QGraphicsItem *item, groupItem->childItems()) { QUuid tmpUuid = UBGraphicsScene::getPersonalUuid(item); diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index ae78a5af..5d3a9a0c 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1634,7 +1634,7 @@ void UBBoardController::adjustDisplayViews() int UBBoardController::autosaveTimeoutFromSettings() { - int value = UBSettings::settings()->timerInterval->get().toInt(); + int value = UBSettings::settings()->autoSaveInterval->get().toInt(); int minute = 60 * 1000; return value * minute; @@ -1773,8 +1773,8 @@ void UBBoardController::autosaveTimeout() void UBBoardController::appMainModeChanged(UBApplicationController::MainMode md) { - int timerInterval = autosaveTimeoutFromSettings(); - if (!timerInterval) { + int autoSaveInterval = autosaveTimeoutFromSettings(); + if (!autoSaveInterval) { return; } @@ -1784,7 +1784,7 @@ void UBBoardController::appMainModeChanged(UBApplicationController::MainMode md) } if (md == UBApplicationController::Board) { - mAutosaveTimer->start(timerInterval); + mAutosaveTimer->start(autoSaveInterval); } else if (mAutosaveTimer->isActive()) { mAutosaveTimer->stop(); } diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 5f4fba9f..73ac1370 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -353,7 +353,7 @@ void UBSettings::init() boardShowToolsPalette = new UBSetting(this, "Board", "ShowToolsPalette", "false"); magnifierDrawingMode = new UBSetting(this, "Board", "MagnifierDrawingMode", "0"); - timerInterval = new UBSetting(this, "Board", "Timer interval", "5"); + autoSaveInterval = new UBSetting(this, "Board", "AutoSaveIntervalInMinutes", "3"); svgViewBoxMargin = new UBSetting(this, "SVG", "ViewBoxMargin", "50"); diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h index 9de4c801..b37c7af1 100644 --- a/src/core/UBSettings.h +++ b/src/core/UBSettings.h @@ -373,7 +373,7 @@ class UBSettings : public QObject UBSetting* libIconSize; UBSetting* magnifierDrawingMode; - UBSetting* timerInterval; + UBSetting* autoSaveInterval; public slots: diff --git a/src/domain/UBGraphicsGroupContainerItem.cpp b/src/domain/UBGraphicsGroupContainerItem.cpp index dcc94b97..a3df73ed 100644 --- a/src/domain/UBGraphicsGroupContainerItem.cpp +++ b/src/domain/UBGraphicsGroupContainerItem.cpp @@ -79,9 +79,14 @@ void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item) if (UBGraphicsItem::isRotatable(this) && !UBGraphicsItem::isRotatable(item)) { Delegate()->setUBFlag(GF_REVOLVABLE, false); } - } else { + if (!UBGraphicsItem::isLocked(this) && UBGraphicsItem::isLocked(item)) { + Delegate()->setLocked(true); + } + } + else { Delegate()->setUBFlag(GF_FLIPPABLE_ALL_AXIS, UBGraphicsItem::isFlippable(item)); Delegate()->setUBFlag(GF_REVOLVABLE, UBGraphicsItem::isRotatable(item)); + Delegate()->setLocked(UBGraphicsItem::isLocked(item)); } // COMBINE @@ -322,6 +327,7 @@ void UBGraphicsGroupContainerItem::pRemoveFromGroup(QGraphicsItem *item) if (!UBGraphicsItem::isFlippable(item) || !UBGraphicsItem::isRotatable(item)) { bool flippableNow = true; bool rotatableNow = true; + bool lockedNow = false; foreach (QGraphicsItem *item, childItems()) { if (!UBGraphicsItem::isFlippable(item)) { @@ -330,12 +336,17 @@ void UBGraphicsGroupContainerItem::pRemoveFromGroup(QGraphicsItem *item) if (!UBGraphicsItem::isRotatable(item)) { rotatableNow = false; } - if (!rotatableNow && !flippableNow) { + if(UBGraphicsItem::isLocked(item)) + lockedNow = true; + + if (!rotatableNow && !flippableNow && lockedNow) { break; } + } Delegate()->setUBFlag(GF_FLIPPABLE_ALL_AXIS, flippableNow); Delegate()->setUBFlag(GF_REVOLVABLE, rotatableNow); + Delegate()->setLocked(lockedNow); } } diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index db3a275e..aad80ad6 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -727,6 +727,15 @@ void UBGraphicsItemDelegate::showMenu() mMenu->exec(cv->mapToGlobal(pinPos.bottomRight())); } +void UBGraphicsItemDelegate::setLocked(bool pLocked) +{ + Q_ASSERT(mDelegated); + + if (mDelegated) { + mDelegated->setData(UBGraphicsItemData::ItemLocked, QVariant(pLocked)); + } +} + void UBGraphicsItemDelegate::updateFrame() { if (mFrame && !mFrame->scene() && mDelegated->scene()) diff --git a/src/domain/UBGraphicsItemDelegate.h b/src/domain/UBGraphicsItemDelegate.h index cc8ded60..b2096b45 100644 --- a/src/domain/UBGraphicsItemDelegate.h +++ b/src/domain/UBGraphicsItemDelegate.h @@ -282,6 +282,7 @@ class UBGraphicsItemDelegate : public QObject void setMimeData(QMimeData* mimeData); void setDragPixmap(const QPixmap &pix) {mDragPixmap = pix;} + void setLocked(bool pLocked); void setButtonsVisible(bool visible); UBGraphicsToolBarItem* getToolBarItem() const { return mToolBarItem; } diff --git a/src/domain/UBGraphicsWidgetItem.cpp b/src/domain/UBGraphicsWidgetItem.cpp index 6ba3cfe7..5beead86 100644 --- a/src/domain/UBGraphicsWidgetItem.cpp +++ b/src/domain/UBGraphicsWidgetItem.cpp @@ -565,12 +565,9 @@ void UBGraphicsWidgetItem::injectInlineJavaScript() void UBGraphicsWidgetItem::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { - if (scene() && scene()->renderingContext() != UBGraphicsScene::Screen) { - painter->drawPixmap(0, 0, snapshot()); - } - else { - QGraphicsWebView::paint(painter, option, widget); - } + + QGraphicsWebView::paint(painter, option, widget); + if (!mInitialLoadDone) { QString message; diff --git a/src/domain/UBItem.cpp b/src/domain/UBItem.cpp index f75028b3..34a2ccb8 100644 --- a/src/domain/UBItem.cpp +++ b/src/domain/UBItem.cpp @@ -85,6 +85,11 @@ bool UBGraphicsItem::isRotatable(QGraphicsItem *item) return item->data(UBGraphicsItemData::ItemRotatable).toBool(); } +bool UBGraphicsItem::isLocked(QGraphicsItem *item) +{ + return item->data(UBGraphicsItemData::ItemLocked).toBool(); +} + QUuid UBGraphicsItem::getOwnUuid(QGraphicsItem *item) { QString idCandidate = item->data(UBGraphicsItemData::ItemUuid).toString(); diff --git a/src/domain/UBItem.h b/src/domain/UBItem.h index dcf2287d..71966a6b 100644 --- a/src/domain/UBItem.h +++ b/src/domain/UBItem.h @@ -116,6 +116,7 @@ public: static void assignZValue(QGraphicsItem*, qreal value); static bool isRotatable(QGraphicsItem *item); static bool isFlippable(QGraphicsItem *item); + static bool isLocked(QGraphicsItem *item); static QUuid getOwnUuid(QGraphicsItem *item); static UBGraphicsItemDelegate *Delegate(QGraphicsItem *pItem);