diff --git a/resources/images/toque.png b/resources/images/toque.png new file mode 100644 index 00000000..a976e147 Binary files /dev/null and b/resources/images/toque.png differ diff --git a/resources/sankore.qrc b/resources/sankore.qrc index 425c21c5..8965e022 100644 --- a/resources/sankore.qrc +++ b/resources/sankore.qrc @@ -365,5 +365,6 @@ images/teacherGuide/pencil.svg images/duplicateDisabled.svg images/teacherGuide/flash_24x24.svg + images/toque.png diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index f557ff8a..80f91e9d 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -1084,7 +1084,7 @@ QGraphicsItem *UBSvgSubsetAdaptor::UBSvgSubsetReader::readElementFromGroup() { QGraphicsItem *result = 0; - result = mScene->itemByUuid(QUuid(mXmlReader.attributes().value(aId).toString())); + result = mScene->itemForUuid(QUuid(mXmlReader.attributes().value(aId).toString())); mXmlReader.skipCurrentElement(); mXmlReader.readNext(); diff --git a/src/api/UBWidgetMessageAPI.cpp b/src/api/UBWidgetMessageAPI.cpp index 306f2702..f145fba3 100644 --- a/src/api/UBWidgetMessageAPI.cpp +++ b/src/api/UBWidgetMessageAPI.cpp @@ -17,8 +17,6 @@ #include "core/UBApplication.h" -#include "domain/UBGraphicsWebView.h" - #include "core/memcheck.h" UBWidgetMessageAPI::UBWidgetMessageAPI(UBGraphicsWidgetItem *graphicsWidgetItem, QObject *parent) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index e83414f7..3a6a2394 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -645,7 +645,7 @@ void UBBoardController::duplicateItem(UBItem *item) { mActiveScene->addItem(gitem); gitem->setPos(itemPos); - mLastCreatedItem = gitem; + mLastCreatedItem = gitem; gitem->setSelected(true); } return; @@ -1132,7 +1132,7 @@ UBItem *UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QStri QString destFile; bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(), - "", + sourceUrl.toString(), UBPersistenceManager::videoDirectory, uuid, destFile, @@ -1175,7 +1175,7 @@ UBItem *UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QStri QString destFile; bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(), - "", + sourceUrl.toString(), UBPersistenceManager::audioDirectory, uuid, destFile, diff --git a/src/board/UBFeaturesController.cpp b/src/board/UBFeaturesController.cpp index 6c777e73..a9bbeb08 100644 --- a/src/board/UBFeaturesController.cpp +++ b/src/board/UBFeaturesController.cpp @@ -144,7 +144,7 @@ void UBFeaturesComputingThread::compute(const QList > &pS void UBFeaturesComputingThread::run() { forever { - qDebug() << "Custom thread started execution"; +// qDebug() << "Custom thread started execution"; mMutex.lock(); QList > searchData = mScanningData; @@ -158,17 +158,17 @@ void UBFeaturesComputingThread::run() break; } - QTime curTime = QTime::currentTime(); +// QTime curTime = QTime::currentTime(); int fsCnt = featuresCountAll(searchData); - int msecsto = curTime.msecsTo(QTime::currentTime()); - qDebug() << "time on evaluation" << msecsto; +// int msecsto = curTime.msecsTo(QTime::currentTime()); +// qDebug() << "time on evaluation" << msecsto; emit maxFilesCountEvaluated(fsCnt); emit scanStarted(); - curTime = QTime::currentTime(); +// curTime = QTime::currentTime(); scanAll(searchData, favoriteSet); - qDebug() << "Time on finishing" << curTime.msecsTo(QTime::currentTime()); +// qDebug() << "Time on finishing" << curTime.msecsTo(QTime::currentTime()); emit scanFinished(); mMutex.lock(); @@ -183,7 +183,7 @@ void UBFeaturesComputingThread::run() UBFeaturesComputingThread::~UBFeaturesComputingThread() { - qDebug() << "thread destructor catched"; +// qDebug() << "thread destructor catched"; mMutex.lock(); abort = true; diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index 2c025a7c..44c534aa 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -913,6 +913,7 @@ bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy, QString& destinationPath, QByteArray* data) { + Q_ASSERT(path.length()); QFileInfo fi(path); if (!pDocumentProxy || objectUuid.isNull()) @@ -920,6 +921,8 @@ bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy, if (data == NULL && !fi.exists()) return false; + qDebug() << fi.suffix(); + QString fileName = subdir + "/" + objectUuid.toString() + "." + fi.suffix(); destinationPath = pDocumentProxy->persistencePath() + "/" + fileName; diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index af8734e6..19e0fe4d 100755 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -366,25 +366,18 @@ void UBDocumentController::setupViews() connect(mDocumentUI->thumbnailWidget, SIGNAL(sceneDropped(UBDocumentProxy*, int, int)), this, SLOT(moveSceneToIndex ( UBDocumentProxy*, int, int))); connect(mDocumentUI->thumbnailWidget, SIGNAL(resized()), this, SLOT(thumbnailViewResized())); - connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseDoubleClick(QGraphicsItem*, int)), - this, SLOT(pageDoubleClicked(QGraphicsItem*, int))); - connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseClick(QGraphicsItem*, int)), - this, SLOT(pageClicked(QGraphicsItem*, int))); + connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseDoubleClick(QGraphicsItem*, int)), this, SLOT(pageDoubleClicked(QGraphicsItem*, int))); + connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseClick(QGraphicsItem*, int)), this, SLOT(pageClicked(QGraphicsItem*, int))); - connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), - this, SLOT(pageSelectionChanged())); + connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged())); - connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentCreated(UBDocumentProxy*)), - this, SLOT(addDocumentInTree(UBDocumentProxy*))); + connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentCreated(UBDocumentProxy*)), this, SLOT(addDocumentInTree(UBDocumentProxy*))); - connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)), - this, SLOT(updateDocumentInTree(UBDocumentProxy*))); + connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)), this, SLOT(updateDocumentInTree(UBDocumentProxy*))); - connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int)), - this, SLOT(documentSceneChanged(UBDocumentProxy*, int))); + connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int))); - connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneWillBeDeleted(UBDocumentProxy*, int)), - this, SLOT(documentSceneChanged(UBDocumentProxy*, int))); + connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneWillBeDeleted(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int))); mDocumentUI->thumbnailWidget->setBackgroundBrush(UBSettings::documentViewLightColor); @@ -1006,7 +999,7 @@ void UBDocumentController::addFolderOfImages() if (importedImageNumber == 0) { - showMessage(tr("Folder does not contain any image files!")); + showMessage(tr("Folder does not contain any image files")); UBApplication::applicationController->showDocument(); } else diff --git a/src/domain/UBGraphicsGroupContainerItem.cpp b/src/domain/UBGraphicsGroupContainerItem.cpp index 818eb88e..82c03068 100644 --- a/src/domain/UBGraphicsGroupContainerItem.cpp +++ b/src/domain/UBGraphicsGroupContainerItem.cpp @@ -16,8 +16,8 @@ UBGraphicsGroupContainerItem::UBGraphicsGroupContainerItem(QGraphicsItem *parent { setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); - mDelegate = new UBGraphicsGroupContainerItemDelegate(this, 0); - mDelegate->init(); + setDelegate(new UBGraphicsGroupContainerItemDelegate(this, 0)); + Delegate()->init(); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); setFlag(QGraphicsItem::ItemIsSelectable, true); @@ -32,8 +32,6 @@ UBGraphicsGroupContainerItem::UBGraphicsGroupContainerItem(QGraphicsItem *parent UBGraphicsGroupContainerItem::~UBGraphicsGroupContainerItem() { - if (mDelegate) - delete mDelegate; } void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item) @@ -50,14 +48,14 @@ void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item) //Check if group is allready rotatable or flippable if (childItems().count()) { if (UBGraphicsItem::isFlippable(this) && !UBGraphicsItem::isFlippable(item)) { - mDelegate->setFlippable(false); + Delegate()->setFlippable(false); } if (UBGraphicsItem::isRotatable(this) && !UBGraphicsItem::isRotatable(item)) { - mDelegate->setRotatable(false); + Delegate()->setRotatable(false); } } else { - mDelegate->setFlippable(UBGraphicsItem::isFlippable(item)); - mDelegate->setRotatable(UBGraphicsItem::isRotatable(item)); + Delegate()->setFlippable(UBGraphicsItem::isFlippable(item)); + Delegate()->setRotatable(UBGraphicsItem::isRotatable(item)); } // COMBINE @@ -125,6 +123,8 @@ void UBGraphicsGroupContainerItem::removeFromGroup(QGraphicsItem *item) pRemoveFromGroup(item); + item->setFlags(ItemIsSelectable | ItemIsFocusable); + } void UBGraphicsGroupContainerItem::deselectCurrentItem() @@ -207,19 +207,13 @@ void UBGraphicsGroupContainerItem::copyItemParameters(UBItem *copy) const } } -void UBGraphicsGroupContainerItem::remove() -{ - if (mDelegate) - mDelegate->remove(); -} - void UBGraphicsGroupContainerItem::setUuid(const QUuid &pUuid) { UBItem::setUuid(pUuid); setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene } -void UBGraphicsGroupContainerItem::destroy() { +void UBGraphicsGroupContainerItem::destroy(bool canUndo) { foreach (QGraphicsItem *item, childItems()) { pRemoveFromGroup(item); @@ -227,7 +221,7 @@ void UBGraphicsGroupContainerItem::destroy() { item->setFlag(QGraphicsItem::ItemIsFocusable, true); } - remove(); + remove(canUndo); } void UBGraphicsGroupContainerItem::clearSource() @@ -244,7 +238,7 @@ void UBGraphicsGroupContainerItem::clearSource() void UBGraphicsGroupContainerItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mousePressEvent(event)) { + if (Delegate()->mousePressEvent(event)) { //NOOP } else { @@ -257,7 +251,7 @@ void UBGraphicsGroupContainerItem::mousePressEvent(QGraphicsSceneMouseEvent *eve void UBGraphicsGroupContainerItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mouseMoveEvent(event)) { + if (Delegate()->mouseMoveEvent(event)) { // NOOP; } else { QGraphicsItem::mouseMoveEvent(event); @@ -273,7 +267,7 @@ void UBGraphicsGroupContainerItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e QVariant UBGraphicsGroupContainerItem::itemChange(GraphicsItemChange change, const QVariant &value) { - QVariant newValue = mDelegate->itemChange(change, value); + QVariant newValue = Delegate()->itemChange(change, value); foreach(QGraphicsItem *child, children()) { @@ -317,8 +311,8 @@ void UBGraphicsGroupContainerItem::pRemoveFromGroup(QGraphicsItem *item) break; } } - mDelegate->setFlippable(flippableNow); - mDelegate->setRotatable(rotatableNow); + Delegate()->setFlippable(flippableNow); + Delegate()->setRotatable(rotatableNow); } } diff --git a/src/domain/UBGraphicsGroupContainerItem.h b/src/domain/UBGraphicsGroupContainerItem.h index e8fa77eb..82ccc81f 100644 --- a/src/domain/UBGraphicsGroupContainerItem.h +++ b/src/domain/UBGraphicsGroupContainerItem.h @@ -22,13 +22,10 @@ public: QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - virtual UBGraphicsItemDelegate* Delegate() const { return mDelegate;} - virtual UBCoreGraphicsScene *corescene(); virtual UBGraphicsGroupContainerItem *deepCopy() const; virtual void copyItemParameters(UBItem *copy) const; - virtual void remove(); enum { Type = UBGraphicsItemType::groupContainerType }; virtual int type() const @@ -37,7 +34,7 @@ public: } virtual void setUuid(const QUuid &pUuid); - void destroy(); + void destroy(bool canUndo = true); virtual void clearSource(); diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index 9419774e..0b23509f 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -407,7 +407,7 @@ void UBGraphicsItemDelegate::remove(bool canUndo) scene->removeItem(mFrame); /* this is performed because when removing delegated from scene while it contains flash content, segfault happens because of QGraphicsScene::removeItem() */ - UBGraphicsWebView *mDelegated_casted = dynamic_cast(mDelegated); + UBGraphicsWidgetItem *mDelegated_casted = dynamic_cast(mDelegated); if (mDelegated_casted) mDelegated_casted->setHtml(QString()); diff --git a/src/domain/UBGraphicsItemGroupUndoCommand.cpp b/src/domain/UBGraphicsItemGroupUndoCommand.cpp index 9b58dc1d..d087216f 100644 --- a/src/domain/UBGraphicsItemGroupUndoCommand.cpp +++ b/src/domain/UBGraphicsItemGroupUndoCommand.cpp @@ -22,7 +22,7 @@ UBGraphicsItemGroupUndoCommand::~UBGraphicsItemGroupUndoCommand() void UBGraphicsItemGroupUndoCommand::undo() { - mGroup->destroy(); + mGroup->destroy(false); foreach(QGraphicsItem *item, mItems) { item->setSelected(true); } @@ -41,7 +41,7 @@ void UBGraphicsItemGroupUndoCommand::redo() QList childItems = item->childItems(); UBGraphicsGroupContainerItem *currentGroup = dynamic_cast(item); if (currentGroup) { - currentGroup->destroy(); + currentGroup->destroy(false); } foreach (QGraphicsItem *chItem, childItems) { mGroup->addToGroup(chItem); diff --git a/src/domain/UBGraphicsItemUndoCommand.cpp b/src/domain/UBGraphicsItemUndoCommand.cpp index d9961fa0..c8637242 100644 --- a/src/domain/UBGraphicsItemUndoCommand.cpp +++ b/src/domain/UBGraphicsItemUndoCommand.cpp @@ -27,10 +27,11 @@ #include "domain/UBGraphicsGroupContainerItem.h" UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, const QSet& pRemovedItems, - const QSet& pAddedItems) + const QSet& pAddedItems, const GroupDataTable &groupsMap) : mScene(pScene) - , mRemovedItems(pRemovedItems - pAddedItems) - , mAddedItems(pAddedItems - pRemovedItems) + , mRemovedItems(pRemovedItems - pAddedItems) + , mAddedItems(pAddedItems - pRemovedItems) + , mExcludedFromGroup(groupsMap) { mFirstRedo = true; @@ -110,6 +111,36 @@ void UBGraphicsItemUndoCommand::undo() } } + QMapIterator curMapElement(mExcludedFromGroup); + UBGraphicsGroupContainerItem *nextGroup = 0; + UBGraphicsGroupContainerItem *previousGroupItem; + bool groupChanged = false; + + while (curMapElement.hasNext()) { + curMapElement.next(); + + groupChanged = previousGroupItem != curMapElement.key(); + //trying to find the group on the scene; + if (!nextGroup || groupChanged) { + UBGraphicsGroupContainerItem *groupCandidate = curMapElement.key(); + if (groupCandidate) { + nextGroup = groupCandidate; + if(!mScene->items().contains(nextGroup)) { + mScene->addItem(nextGroup); + } + nextGroup->setVisible(true); + } + } + + QGraphicsItem *groupedItem = mScene->itemForUuid(curMapElement.value()); + if (groupedItem) { + nextGroup->addToGroup(groupedItem); + } + + previousGroupItem = curMapElement.key(); + UBGraphicsItem::Delegate(nextGroup)->update(); + } + // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint mScene->update(mScene->sceneRect()); @@ -125,6 +156,35 @@ void UBGraphicsItemUndoCommand::redo() return; } + QMapIterator curMapElement(mExcludedFromGroup); + UBGraphicsGroupContainerItem *nextGroup = 0; + UBGraphicsGroupContainerItem *previousGroupItem; + bool groupChanged = false; + + while (curMapElement.hasNext()) { + curMapElement.next(); + + groupChanged = previousGroupItem != curMapElement.key(); + //trying to find the group on the scene; + if (!nextGroup || groupChanged) { + UBGraphicsGroupContainerItem *groupCandidate = curMapElement.key(); + if (groupCandidate) { + nextGroup = groupCandidate; + } + } + QGraphicsItem *groupedItem = mScene->itemForUuid(curMapElement.value()); + if (groupedItem) { + if (nextGroup->childItems().count() == 1) { + nextGroup->destroy(false); + break; + } + nextGroup->removeFromGroup(groupedItem); + } + + previousGroupItem = curMapElement.key(); + UBGraphicsItem::Delegate(nextGroup)->update(); + } + QSetIterator itRemoved(mRemovedItems); while (itRemoved.hasNext()) { diff --git a/src/domain/UBGraphicsItemUndoCommand.h b/src/domain/UBGraphicsItemUndoCommand.h index 78e7ec9a..fec45d4f 100644 --- a/src/domain/UBGraphicsItemUndoCommand.h +++ b/src/domain/UBGraphicsItemUndoCommand.h @@ -18,6 +18,7 @@ #include #include "UBAbstractUndoCommand.h" +#include "UBGraphicsGroupContainerItem.h" class UBGraphicsScene; @@ -26,8 +27,10 @@ class UBGraphicsScene; class UBGraphicsItemUndoCommand : public UBAbstractUndoCommand { public: + typedef QMultiMap GroupDataTable; + UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, const QSet& pRemovedItems, - const QSet& pAddedItems); + const QSet& pAddedItems, const GroupDataTable &groupsMap = GroupDataTable()); UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, QGraphicsItem* pRemovedItem, QGraphicsItem* pAddedItem); @@ -47,6 +50,7 @@ class UBGraphicsItemUndoCommand : public UBAbstractUndoCommand UBGraphicsScene* mScene; QSet mRemovedItems; QSet mAddedItems; + GroupDataTable mExcludedFromGroup; bool mFirstRedo; }; diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index 76bbbd53..d96ab915 100644 --- a/src/domain/UBGraphicsMediaItem.cpp +++ b/src/domain/UBGraphicsMediaItem.cpp @@ -72,6 +72,10 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte update(); mMediaObject = new Phonon::MediaObject(this); + + setDelegate(new UBGraphicsMediaItemDelegate(this, mMediaObject)); + Delegate()->init(); + if (pMediaFileUrl.toLocalFile().contains("videos")) { mMediaType = mediaType_Video; @@ -116,18 +120,14 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte mSource = Phonon::MediaSource(pMediaFileUrl); mMediaObject->setCurrentSource(mSource); - UBGraphicsMediaItemDelegate* itemDelegate = new UBGraphicsMediaItemDelegate(this, mMediaObject); - itemDelegate->init(); - setDelegate(itemDelegate); - if (mediaType_Audio == mMediaType) - mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::ResizingHorizontally); + Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::ResizingHorizontally); else - mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); + Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly - connect(mDelegate, SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool))); + connect(Delegate(), SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool))); connect(mMediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasMediaChanged(bool))); } @@ -220,7 +220,7 @@ void UBGraphicsMediaItem::hasMediaChanged(bool hasMedia) { Q_UNUSED(hasMedia); mMediaObject->seek(mInitialPos); - UBGraphicsMediaItemDelegate *med = dynamic_cast(mDelegate); + UBGraphicsMediaItemDelegate *med = dynamic_cast(Delegate()); if (med) med->updateTicker(initialPos()); } @@ -289,9 +289,9 @@ void UBGraphicsMediaItem::copyItemParameters(UBItem *copy) const void UBGraphicsMediaItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate) + if (Delegate()) { - mDelegate->mousePressEvent(event); + Delegate()->mousePressEvent(event); if (parentItem() && UBGraphicsGroupContainerItem::Type == parentItem()->type()) { UBGraphicsGroupContainerItem *group = qgraphicsitem_cast(parentItem()); @@ -304,7 +304,7 @@ void UBGraphicsMediaItem::mousePressEvent(QGraphicsSceneMouseEvent *event) } group->setCurrentItem(this); this->setSelected(true); - mDelegate->positionHandles(); + Delegate()->positionHandles(); } } @@ -351,3 +351,4 @@ void UBGraphicsMediaItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) event->accept(); } + diff --git a/src/domain/UBGraphicsMediaItem.h b/src/domain/UBGraphicsMediaItem.h index 308fbea9..b52c0ab6 100644 --- a/src/domain/UBGraphicsMediaItem.h +++ b/src/domain/UBGraphicsMediaItem.h @@ -112,7 +112,6 @@ protected: virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - virtual void clearSource(); Phonon::MediaObject *mMediaObject; diff --git a/src/domain/UBGraphicsPDFItem.cpp b/src/domain/UBGraphicsPDFItem.cpp index f918b3d2..3bcb09f6 100644 --- a/src/domain/UBGraphicsPDFItem.cpp +++ b/src/domain/UBGraphicsPDFItem.cpp @@ -28,21 +28,20 @@ UBGraphicsPDFItem::UBGraphicsPDFItem(PDFRenderer *renderer, int pageNumber, QGra { setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); //deprecated setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::BackgroundItem)); //Necessary to set if we want z value to be assigned correctly - mDelegate = new UBGraphicsItemDelegate(this,0, true, false, false); - mDelegate->init(); + + setDelegate(new UBGraphicsItemDelegate(this,0, true, false, false)); + Delegate()->init(); } UBGraphicsPDFItem::~UBGraphicsPDFItem() { - if (mDelegate) - delete mDelegate; } QVariant UBGraphicsPDFItem::itemChange(GraphicsItemChange change, const QVariant &value) { - QVariant newValue = mDelegate->itemChange(change, value); + QVariant newValue = Delegate()->itemChange(change, value); return GraphicsPDFItem::itemChange(change, newValue); } @@ -54,7 +53,7 @@ void UBGraphicsPDFItem::setUuid(const QUuid &pUuid) void UBGraphicsPDFItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mousePressEvent(event)) + if (Delegate()->mousePressEvent(event)) { // NOOP } @@ -67,7 +66,7 @@ void UBGraphicsPDFItem::mousePressEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsPDFItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mouseMoveEvent(event)) + if (Delegate()->mouseMoveEvent(event)) { // NOOP } @@ -80,7 +79,7 @@ void UBGraphicsPDFItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsPDFItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - mDelegate->mouseReleaseEvent(event); + Delegate()->mouseReleaseEvent(event); GraphicsPDFItem::mouseReleaseEvent(event); } @@ -131,13 +130,6 @@ UBGraphicsScene* UBGraphicsPDFItem::scene() } -void UBGraphicsPDFItem::remove() -{ - if (mDelegate) - mDelegate->remove(true); -} - - UBGraphicsPixmapItem* UBGraphicsPDFItem::toPixmapItem() const { QPixmap pixmap(mRenderer->pageSizeF(mPageNumber).toSize()); @@ -155,3 +147,5 @@ UBGraphicsPixmapItem* UBGraphicsPDFItem::toPixmapItem() const return pixmapItem; } + + diff --git a/src/domain/UBGraphicsPDFItem.h b/src/domain/UBGraphicsPDFItem.h index ac55190e..9107ea85 100644 --- a/src/domain/UBGraphicsPDFItem.h +++ b/src/domain/UBGraphicsPDFItem.h @@ -47,10 +47,7 @@ class UBGraphicsPDFItem: public GraphicsPDFItem, public UBItem, public UBGraphic virtual UBGraphicsScene* scene(); - virtual void remove(); - virtual UBGraphicsPixmapItem* toPixmapItem() const; - virtual UBGraphicsItemDelegate *Delegate() const {return mDelegate;} virtual void clearSource(){;} virtual void setUuid(const QUuid &pUuid); @@ -63,7 +60,6 @@ class UBGraphicsPDFItem: public GraphicsPDFItem, public UBItem, public UBGraphic virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); -// UBGraphicsItemDelegate* mDelegate; }; #endif /* UBGRAPHICSPDFITEM_H_ */ diff --git a/src/domain/UBGraphicsPixmapItem.cpp b/src/domain/UBGraphicsPixmapItem.cpp index 4e346256..f771032d 100644 --- a/src/domain/UBGraphicsPixmapItem.cpp +++ b/src/domain/UBGraphicsPixmapItem.cpp @@ -28,10 +28,10 @@ UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent) : QGraphicsPixmapItem(parent) { - mDelegate = new UBGraphicsItemDelegate(this, 0, true); - mDelegate->init(); - mDelegate->setFlippable(true); - mDelegate->setRotatable(true); + setDelegate(new UBGraphicsItemDelegate(this, 0, true)); + Delegate()->init(); + Delegate()->setFlippable(true); + Delegate()->setRotatable(true); setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setTransformationMode(Qt::SmoothTransformation); @@ -44,13 +44,11 @@ UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent) UBGraphicsPixmapItem::~UBGraphicsPixmapItem() { - if (mDelegate) - delete mDelegate; } QVariant UBGraphicsPixmapItem::itemChange(GraphicsItemChange change, const QVariant &value) { - QVariant newValue = mDelegate->itemChange(change, value); + QVariant newValue = Delegate()->itemChange(change, value); return QGraphicsPixmapItem::itemChange(change, newValue); } @@ -64,14 +62,14 @@ void UBGraphicsPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { QMimeData* pMime = new QMimeData(); pMime->setImageData(pixmap().toImage()); - mDelegate->setMimeData(pMime); + Delegate()->setMimeData(pMime); qreal k = (qreal)pixmap().width() / 100.0; QSize newSize((int)(pixmap().width() / k), (int)(pixmap().height() / k)); - mDelegate->setDragPixmap(pixmap().scaled(newSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + Delegate()->setDragPixmap(pixmap().scaled(newSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - if (mDelegate->mousePressEvent(event)) + if (Delegate()->mousePressEvent(event)) { //NOOP } @@ -83,7 +81,7 @@ void UBGraphicsPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mouseMoveEvent(event)) + if (Delegate()->mouseMoveEvent(event)) { // NOOP; } @@ -95,7 +93,7 @@ void UBGraphicsPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - mDelegate->mouseReleaseEvent(event); + Delegate()->mouseReleaseEvent(event); QGraphicsPixmapItem::mouseReleaseEvent(event); } @@ -145,13 +143,6 @@ UBGraphicsScene* UBGraphicsPixmapItem::scene() } -void UBGraphicsPixmapItem::remove() -{ - if (mDelegate) - mDelegate->remove(true); -} - - void UBGraphicsPixmapItem::setOpacity(qreal op) { QGraphicsPixmapItem::setOpacity(op); diff --git a/src/domain/UBGraphicsPixmapItem.h b/src/domain/UBGraphicsPixmapItem.h index 787f28eb..2a43e4eb 100644 --- a/src/domain/UBGraphicsPixmapItem.h +++ b/src/domain/UBGraphicsPixmapItem.h @@ -44,14 +44,11 @@ class UBGraphicsPixmapItem : public QObject, public QGraphicsPixmapItem, public virtual UBGraphicsScene* scene(); - virtual void remove(); - Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity) void setOpacity(qreal op); qreal opacity() const; - virtual UBGraphicsItemDelegate* Delegate() const {return mDelegate;} virtual void clearSource(){;} virtual void setUuid(const QUuid &pUuid); diff --git a/src/domain/UBGraphicsProxyWidget.cpp b/src/domain/UBGraphicsProxyWidget.cpp index 25617250..ed2f6797 100644 --- a/src/domain/UBGraphicsProxyWidget.cpp +++ b/src/domain/UBGraphicsProxyWidget.cpp @@ -29,8 +29,9 @@ UBGraphicsProxyWidget::UBGraphicsProxyWidget(QGraphicsItem* parent) { setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); - mDelegate = new UBGraphicsItemDelegate(this,0, true, false, false); - mDelegate->init(); + //UBGraphicsItemDelegate* delegate = new UBGraphicsItemDelegate(this,0, true, false, false); + //delegate->init(); + //setDelegate(delegate); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); @@ -40,8 +41,6 @@ UBGraphicsProxyWidget::UBGraphicsProxyWidget(QGraphicsItem* parent) UBGraphicsProxyWidget::~UBGraphicsProxyWidget() { - if (mDelegate) - delete mDelegate; } @@ -67,7 +66,7 @@ QVariant UBGraphicsProxyWidget::itemChange(GraphicsItemChange change, const QVar } } - QVariant newValue = mDelegate->itemChange(change, value); + QVariant newValue = Delegate()->itemChange(change, value); return QGraphicsProxyWidget::itemChange(change, newValue); } @@ -79,7 +78,7 @@ void UBGraphicsProxyWidget::setUuid(const QUuid &pUuid) void UBGraphicsProxyWidget::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mousePressEvent(event)) + if (Delegate()->mousePressEvent(event)) { //NOOP } @@ -95,7 +94,7 @@ void UBGraphicsProxyWidget::mousePressEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsProxyWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mouseMoveEvent(event)) + if (Delegate()->mouseMoveEvent(event)) { // NOOP; } @@ -108,13 +107,13 @@ void UBGraphicsProxyWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsProxyWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - mDelegate->mouseReleaseEvent(event); + Delegate()->mouseReleaseEvent(event); QGraphicsProxyWidget::mouseReleaseEvent(event); } void UBGraphicsProxyWidget::wheelEvent(QGraphicsSceneWheelEvent *event) { - if( mDelegate->weelEvent(event) ) + if( Delegate()->weelEvent(event) ) { QGraphicsProxyWidget::wheelEvent(event); event->accept(); @@ -132,17 +131,6 @@ void UBGraphicsProxyWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) // NOOP } -void UBGraphicsProxyWidget::setDelegate(UBGraphicsItemDelegate* pDelegate) -{ - if (mDelegate) - { - delete mDelegate; - } - - mDelegate = pDelegate; -} - - void UBGraphicsProxyWidget::resize(qreal w, qreal h) { UBGraphicsProxyWidget::resize(QSizeF(w, h)); @@ -177,8 +165,8 @@ void UBGraphicsProxyWidget::resize(const QSizeF & pSize) QGraphicsProxyWidget::resize(size.width(), size.height()); if (widget()) widget()->resize(size.width(), size.height()); - if (mDelegate) - mDelegate->positionHandles(); + if (Delegate()) + Delegate()->positionHandles(); if (scene()) scene()->setModified(true); } @@ -197,8 +185,3 @@ UBGraphicsScene* UBGraphicsProxyWidget::scene() } -void UBGraphicsProxyWidget::remove() -{ - if (mDelegate) - mDelegate->remove(true); -} diff --git a/src/domain/UBGraphicsProxyWidget.h b/src/domain/UBGraphicsProxyWidget.h index d9280fb7..d663f441 100644 --- a/src/domain/UBGraphicsProxyWidget.h +++ b/src/domain/UBGraphicsProxyWidget.h @@ -27,7 +27,6 @@ class UBGraphicsItemDelegate; class UBGraphicsProxyWidget: public QGraphicsProxyWidget, public UBItem, public UBResizableGraphicsItem, public UBGraphicsItem { public: - UBGraphicsProxyWidget(QGraphicsItem* parent = 0); virtual ~UBGraphicsProxyWidget(); virtual void resize(qreal w, qreal h); @@ -35,18 +34,13 @@ class UBGraphicsProxyWidget: public QGraphicsProxyWidget, public UBItem, public virtual QSizeF size() const; - void setDelegate(UBGraphicsItemDelegate* pDelegate); - virtual UBGraphicsScene* scene(); - virtual void remove(); - - virtual UBGraphicsItemDelegate* Delegate() const { return mDelegate;} - virtual void clearSource(){;} virtual void setUuid(const QUuid &pUuid); protected: + UBGraphicsProxyWidget(QGraphicsItem* parent = 0); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 0cdb2ae6..352d0f2a 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1067,6 +1067,7 @@ UBItem* UBGraphicsScene::deepCopy() const void UBGraphicsScene::clearContent(clearCase pCase) { QSet removedItems; + UBGraphicsItemUndoCommand::GroupDataTable groupsMap; switch (pCase) { case clearBackground : @@ -1106,8 +1107,14 @@ void UBGraphicsScene::clearContent(clearCase pCase) if(shouldDelete) { if (itemGroup) { itemGroup->removeFromGroup(item); + + groupsMap.insert(itemGroup, UBGraphicsItem::getOwnUuid(item)); if (itemGroup->childItems().count() == 1) { - itemGroup->destroy(); + groupsMap.insert(itemGroup, UBGraphicsItem::getOwnUuid(itemGroup->childItems().first())); + QGraphicsItem *lastItem = itemGroup->childItems().first(); + bool isSelected = itemGroup->isSelected(); + itemGroup->destroy(false); + lastItem->setSelected(isSelected); } itemGroup->Delegate()->update(); } @@ -1123,7 +1130,8 @@ void UBGraphicsScene::clearContent(clearCase pCase) update(sceneRect()); if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, QSet()); + + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, QSet(), groupsMap); UBApplication::undoStack->push(uc); } @@ -1442,6 +1450,7 @@ UBGraphicsTextItem* UBGraphicsScene::textForObjectName(const QString& pString, c textItem->setObjectName(objectName); QSizeF size = textItem->size(); textItem->setPos(QPointF(-size.width()/2.0,-size.height()/2.0)); + textItem->setData(UBGraphicsItemData::ItemEditable,QVariant(false)); } textItem->setPlainText(pString); @@ -1571,8 +1580,9 @@ void UBGraphicsScene::removeItem(QGraphicsItem* item) void UBGraphicsScene::removeItems(const QSet& items) { - foreach(QGraphicsItem* item, items) + foreach(QGraphicsItem* item, items) { UBCoreGraphicsScene::removeItem(item); + } mItemCount -= items.size(); @@ -1665,7 +1675,7 @@ QRectF UBGraphicsScene::normalizedSceneRect(qreal ratio) return normalizedRect; } -QGraphicsItem *UBGraphicsScene::itemByUuid(QUuid uuid) +QGraphicsItem *UBGraphicsScene::itemForUuid(QUuid uuid) { QGraphicsItem *result = 0; @@ -2041,8 +2051,8 @@ void UBGraphicsScene::drawItems (QPainter * painter, int numItems, { if (!mTools.contains(rootItem(items[i]))) { - UBGraphicsPDFItem *pdfItem = qgraphicsitem_cast (items[i]); - if(!pdfItem || mRenderingContext == NonScreen) + bool isPdfItem = qgraphicsitem_cast (items[i]) != NULL; + if(!isPdfItem || mRenderingContext == NonScreen) { itemsFiltered[count] = items[i]; optionsFiltered[count] = options[i]; diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index 0dedb9c1..3722d8be 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -174,7 +174,7 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem QRectF normalizedSceneRect(qreal ratio = -1.0); - QGraphicsItem *itemByUuid(QUuid uuid); + QGraphicsItem *itemForUuid(QUuid uuid); void moveTo(const QPointF& pPoint); void drawLineTo(const QPointF& pEndPoint, const qreal& pWidth, bool bLineStyle); diff --git a/src/domain/UBGraphicsStrokesGroup.cpp b/src/domain/UBGraphicsStrokesGroup.cpp index a55d203e..793459a8 100644 --- a/src/domain/UBGraphicsStrokesGroup.cpp +++ b/src/domain/UBGraphicsStrokesGroup.cpp @@ -4,12 +4,14 @@ #include "core/memcheck.h" -UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent):QGraphicsItemGroup(parent) +UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent) + :QGraphicsItemGroup(parent), UBGraphicsItem() { - mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false); - mDelegate->init(); - mDelegate->setFlippable(true); - mDelegate->setRotatable(true); + setDelegate(new UBGraphicsItemDelegate(this, 0, true, true, false)); + Delegate()->init(); + Delegate()->setFlippable(true); + Delegate()->setRotatable(true); + setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); @@ -22,9 +24,6 @@ UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent):QGraphicsI UBGraphicsStrokesGroup::~UBGraphicsStrokesGroup() { - if(mDelegate){ - delete mDelegate; - } } void UBGraphicsStrokesGroup::setUuid(const QUuid &pUuid) @@ -83,7 +82,7 @@ QColor UBGraphicsStrokesGroup::color(colorType pColorType) const void UBGraphicsStrokesGroup::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mousePressEvent(event)) + if (Delegate()->mousePressEvent(event)) { //NOOP } @@ -95,7 +94,7 @@ void UBGraphicsStrokesGroup::mousePressEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsStrokesGroup::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mouseMoveEvent(event)) + if (Delegate()->mouseMoveEvent(event)) { // NOOP; } @@ -107,7 +106,7 @@ void UBGraphicsStrokesGroup::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsStrokesGroup::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - mDelegate->mouseReleaseEvent(event); + Delegate()->mouseReleaseEvent(event); QGraphicsItemGroup::mouseReleaseEvent(event); } @@ -150,12 +149,6 @@ void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const } } -void UBGraphicsStrokesGroup::remove() -{ - if (mDelegate) - mDelegate->remove(true); -} - void UBGraphicsStrokesGroup::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { // Never draw the rubber band, we draw our custom selection with the DelegateFrame @@ -167,7 +160,7 @@ void UBGraphicsStrokesGroup::paint(QPainter *painter, const QStyleOptionGraphics QVariant UBGraphicsStrokesGroup::itemChange(GraphicsItemChange change, const QVariant &value) { - QVariant newValue = mDelegate->itemChange(change, value); + QVariant newValue = Delegate()->itemChange(change, value); return QGraphicsItemGroup::itemChange(change, newValue); } diff --git a/src/domain/UBGraphicsStrokesGroup.h b/src/domain/UBGraphicsStrokesGroup.h index 2c286d11..9b3aa79e 100644 --- a/src/domain/UBGraphicsStrokesGroup.h +++ b/src/domain/UBGraphicsStrokesGroup.h @@ -21,8 +21,6 @@ public: ~UBGraphicsStrokesGroup(); virtual UBItem* deepCopy() const; virtual void copyItemParameters(UBItem *copy) const; - virtual void remove(); - virtual UBGraphicsItemDelegate* Delegate() const {return mDelegate;} enum { Type = UBGraphicsItemType::StrokeItemType }; virtual int type() const { diff --git a/src/domain/UBGraphicsSvgItem.cpp b/src/domain/UBGraphicsSvgItem.cpp index e393ef23..dfa402c9 100644 --- a/src/domain/UBGraphicsSvgItem.cpp +++ b/src/domain/UBGraphicsSvgItem.cpp @@ -53,10 +53,11 @@ void UBGraphicsSvgItem::init() { setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); - mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false); - mDelegate->init(); - mDelegate->setFlippable(true); - mDelegate->setRotatable(true); + setDelegate(new UBGraphicsItemDelegate(this, 0, true, true, false)); + Delegate()->init(); + Delegate()->setFlippable(true); + Delegate()->setRotatable(true); + setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); @@ -71,8 +72,6 @@ void UBGraphicsSvgItem::init() UBGraphicsSvgItem::~UBGraphicsSvgItem() { - if (mDelegate) - delete mDelegate; } @@ -84,14 +83,14 @@ QByteArray UBGraphicsSvgItem::fileData() const QVariant UBGraphicsSvgItem::itemChange(GraphicsItemChange change, const QVariant &value) { - QVariant newValue = mDelegate->itemChange(change, value); + QVariant newValue = Delegate()->itemChange(change, value); return QGraphicsSvgItem::itemChange(change, newValue); } void UBGraphicsSvgItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mousePressEvent(event)) + if (Delegate()->mousePressEvent(event)) { //NOOP } @@ -104,7 +103,7 @@ void UBGraphicsSvgItem::mousePressEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsSvgItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mouseMoveEvent(event)) + if (Delegate()->mouseMoveEvent(event)) { // NOOP; } @@ -117,7 +116,7 @@ void UBGraphicsSvgItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsSvgItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - mDelegate->mouseReleaseEvent(event); + Delegate()->mouseReleaseEvent(event); QGraphicsSvgItem::mouseReleaseEvent(event); } @@ -182,12 +181,6 @@ UBGraphicsScene* UBGraphicsSvgItem::scene() } -void UBGraphicsSvgItem::remove() -{ - if (mDelegate) - mDelegate->remove(true); -} - UBGraphicsPixmapItem* UBGraphicsSvgItem::toPixmapItem() const { diff --git a/src/domain/UBGraphicsSvgItem.h b/src/domain/UBGraphicsSvgItem.h index 95b9d536..1c2351d0 100644 --- a/src/domain/UBGraphicsSvgItem.h +++ b/src/domain/UBGraphicsSvgItem.h @@ -58,10 +58,7 @@ class UBGraphicsSvgItem: public QGraphicsSvgItem, public UBItem, public UBGraphi virtual UBGraphicsScene* scene(); - virtual void remove(); - virtual UBGraphicsPixmapItem* toPixmapItem() const; - virtual UBGraphicsItemDelegate *Delegate() const {return mDelegate;} virtual void setUuid(const QUuid &pUuid); diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index 20adf243..f1ff2855 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -30,17 +30,18 @@ QColor UBGraphicsTextItem::lastUsedTextColor; -UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) - : QGraphicsTextItem(parent) +UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) : + QGraphicsTextItem(parent) + , UBGraphicsItem() , mMultiClickState(0) , mLastMousePressTime(QTime::currentTime()) { - mDelegate = new UBGraphicsTextItemDelegate(this, 0); - mDelegate->init(); + setDelegate(new UBGraphicsTextItemDelegate(this, 0)); + Delegate()->init(); - mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); - mDelegate->setFlippable(false); - mDelegate->setRotatable(true); + Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); + Delegate()->setFlippable(false); + Delegate()->setRotatable(true); mTypeTextHereLabel = tr(""); @@ -58,7 +59,7 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) setUuid(QUuid::createUuid()); - connect(document(), SIGNAL(contentsChanged()), mDelegate, SLOT(contentsChanged())); + connect(document(), SIGNAL(contentsChanged()), Delegate(), SLOT(contentsChanged())); connect(document(), SIGNAL(undoCommandAdded()), this, SLOT(undoCommandAdded())); connect(document()->documentLayout(), SIGNAL(documentSizeChanged(const QSizeF &)), @@ -68,18 +69,14 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) UBGraphicsTextItem::~UBGraphicsTextItem() { - if (mDelegate) - { - delete mDelegate; - } } QVariant UBGraphicsTextItem::itemChange(GraphicsItemChange change, const QVariant &value) { QVariant newValue = value; - if(mDelegate) - newValue = mDelegate->itemChange(change, value); + if(Delegate()) + newValue = Delegate()->itemChange(change, value); return QGraphicsTextItem::itemChange(change, newValue); } @@ -95,10 +92,10 @@ void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) return; } - if (mDelegate) + if (Delegate()) { - mDelegate->mousePressEvent(event); - if (mDelegate && parentItem() && UBGraphicsGroupContainerItem::Type == parentItem()->type()) + Delegate()->mousePressEvent(event); + if (Delegate() && parentItem() && UBGraphicsGroupContainerItem::Type == parentItem()->type()) { UBGraphicsGroupContainerItem *group = qgraphicsitem_cast(parentItem()); if (group) @@ -110,13 +107,13 @@ void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) } group->setCurrentItem(this); this->setSelected(true); - mDelegate->positionHandles(); + Delegate()->positionHandles(); } } else { - mDelegate->getToolBarItem()->show(); + Delegate()->getToolBarItem()->show(); } } @@ -165,7 +162,7 @@ void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (!mDelegate || !mDelegate->mouseMoveEvent(event)) + if (!Delegate() || !Delegate()->mouseMoveEvent(event)) { QGraphicsTextItem::mouseMoveEvent(event); } @@ -184,8 +181,8 @@ void UBGraphicsTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) if (mMultiClickState == 1) { - if (mDelegate) - mDelegate->mouseReleaseEvent(event); + if (Delegate()) + Delegate()->mouseReleaseEvent(event); QGraphicsTextItem::mouseReleaseEvent(event); } @@ -324,8 +321,8 @@ void UBGraphicsTextItem::resize(qreal w, qreal h) setTextWidth(w); setTextHeight(h); - if (mDelegate) - mDelegate->positionHandles(); + if (Delegate()) + Delegate()->positionHandles(); } @@ -347,12 +344,6 @@ void UBGraphicsTextItem::undoCommandAdded() } -void UBGraphicsTextItem::remove() -{ - if (mDelegate) - mDelegate->remove(true); -} - void UBGraphicsTextItem::documentSizeChanged(const QSizeF & newSize) { resize(newSize.width(), newSize.height()); diff --git a/src/domain/UBGraphicsTextItem.h b/src/domain/UBGraphicsTextItem.h index c7dc5c95..61fdb8b1 100644 --- a/src/domain/UBGraphicsTextItem.h +++ b/src/domain/UBGraphicsTextItem.h @@ -58,8 +58,6 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes virtual QSizeF size() const; - virtual void remove(); - static QColor lastUsedTextColor; QColor colorOnDarkBackground() const @@ -81,7 +79,6 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes { mColorOnLightBackground = pColorOnLightBackground; } - virtual UBGraphicsItemDelegate *Delegate() const {return mDelegate;} virtual void clearSource(){;} virtual void setUuid(const QUuid &pUuid); diff --git a/src/domain/UBGraphicsWebView.cpp b/src/domain/UBGraphicsWebView.cpp deleted file mode 100644 index cfc92dc3..00000000 --- a/src/domain/UBGraphicsWebView.cpp +++ /dev/null @@ -1,152 +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 -#include - -#include "UBGraphicsWebView.h" -#include "UBGraphicsScene.h" -#include "UBGraphicsItemDelegate.h" -#include "UBGraphicsDelegateFrame.h" - -#include "core/memcheck.h" - -UBGraphicsWebView::UBGraphicsWebView(QGraphicsItem* parent) - : QGraphicsWebView(parent) -{ - setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); - - mDelegate = new UBGraphicsItemDelegate(this, 0, true); - mDelegate->init(); - - setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); - - QGraphicsWebView::setAcceptHoverEvents(true); -} - - -UBGraphicsWebView::~UBGraphicsWebView() -{ - if (mDelegate) - delete mDelegate; -} - - -QVariant UBGraphicsWebView::itemChange(GraphicsItemChange change, const QVariant &value) -{ - if ((change == QGraphicsItem::ItemSelectedHasChanged) && scene()) { - if (isSelected()) - scene()->setActiveWindow(this); - else - if(scene()->activeWindow() == this) - scene()->setActiveWindow(0); - } - - QVariant newValue = mDelegate->itemChange(change, value); - return QGraphicsWebView::itemChange(change, newValue); -} - -void UBGraphicsWebView::setUuid(const QUuid &pUuid) -{ - UBItem::setUuid(pUuid); - setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene -} - -void UBGraphicsWebView::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - if (!mDelegate->mousePressEvent(event)) - setSelected(true); /* forcing selection */ - - QGraphicsWebView::mousePressEvent(event); -} - - -void UBGraphicsWebView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - if (!mDelegate->mouseMoveEvent(event)) - QGraphicsWebView::mouseMoveEvent(event); -} - - -void UBGraphicsWebView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - mDelegate->mouseReleaseEvent(event); - QGraphicsWebView::mouseReleaseEvent(event); -} - -void UBGraphicsWebView::wheelEvent(QGraphicsSceneWheelEvent *event) -{ - if (mDelegate->weelEvent(event)) - { - QGraphicsWebView::wheelEvent(event); - event->accept(); - } -} - -void UBGraphicsWebView::hoverEnterEvent(QGraphicsSceneHoverEvent *event) -{ - Q_UNUSED(event) - /* NOOP */ -} -void UBGraphicsWebView::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) -{ - Q_UNUSED(event) - /* NOOP */ -} - -void UBGraphicsWebView::setDelegate(UBGraphicsItemDelegate* pDelegate) -{ - if (mDelegate) - delete mDelegate; - - mDelegate = pDelegate; -} - - -void UBGraphicsWebView::resize(qreal w, qreal h) -{ - UBGraphicsWebView::resize(QSizeF(w, h)); -} - - -void UBGraphicsWebView::resize(const QSizeF & pSize) -{ - if (pSize != size()) { - QGraphicsWebView::setMaximumSize(pSize.width(), pSize.height()); - QGraphicsWebView::resize(pSize.width(), pSize.height()); - if (mDelegate) - mDelegate->positionHandles(); - if (scene()) - scene()->setModified(true); - } -} - -QSizeF UBGraphicsWebView::size() const -{ - return QGraphicsWebView::size(); -} - - -UBGraphicsScene* UBGraphicsWebView::scene() -{ - return static_cast(QGraphicsItem::scene()); -} - - -void UBGraphicsWebView::remove() -{ - if (mDelegate) - mDelegate->remove(true); -} diff --git a/src/domain/UBGraphicsWebView.h b/src/domain/UBGraphicsWebView.h deleted file mode 100644 index 45a2db7a..00000000 --- a/src/domain/UBGraphicsWebView.h +++ /dev/null @@ -1,61 +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 UBGRAPHICSWEBVIEW_H_ -#define UBGRAPHICSWEBVIEW_H_ - -#include -#include - -#include "UBItem.h" -#include "UBResizableGraphicsItem.h" - -class UBGraphicsItemDelegate; - -class UBGraphicsWebView: public QGraphicsWebView, public UBItem, public UBResizableGraphicsItem, public UBGraphicsItem -{ - public: - UBGraphicsWebView(QGraphicsItem* parent = 0); - virtual ~UBGraphicsWebView(); - - virtual void resize(qreal w, qreal h); - virtual void resize(const QSizeF & size); - - virtual QSizeF size() const; - - void setDelegate(UBGraphicsItemDelegate* pDelegate); - - virtual UBGraphicsScene* scene(); - - virtual void remove(); - - virtual UBGraphicsItemDelegate* Delegate() const { return mDelegate;} - - virtual void clearSource(){;} - virtual void setUuid(const QUuid &pUuid); - - protected: - - virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - virtual void wheelEvent(QGraphicsSceneWheelEvent *event); - virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); - virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); - virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); - -}; - -#endif /* UBGRAPHICSWEBVIEW_H_ */ diff --git a/src/domain/UBGraphicsWidgetItem.cpp b/src/domain/UBGraphicsWidgetItem.cpp index 35bb32ad..5bd2b725 100644 --- a/src/domain/UBGraphicsWidgetItem.cpp +++ b/src/domain/UBGraphicsWidgetItem.cpp @@ -45,7 +45,7 @@ bool UBGraphicsWidgetItem::sInlineJavaScriptLoaded = false; QStringList UBGraphicsWidgetItem::sInlineJavaScripts; UBGraphicsWidgetItem::UBGraphicsWidgetItem(const QUrl &pWidgetUrl, QGraphicsItem *parent) - : UBGraphicsWebView(parent) + : QGraphicsWebView(parent) , mInitialLoadDone(false) , mIsFreezable(true) , mIsResizable(false) @@ -58,7 +58,7 @@ UBGraphicsWidgetItem::UBGraphicsWidgetItem(const QUrl &pWidgetUrl, QGraphicsItem , mShouldMoveWidget(false) , mUniboardAPI(0) { - setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly + setData(UBGraphicsItemData::ItemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly QGraphicsWebView::setPage(new UBWebPage(this)); QGraphicsWebView::settings()->setAttribute(QWebSettings::JavaEnabled, true); @@ -84,9 +84,11 @@ UBGraphicsWidgetItem::UBGraphicsWidgetItem(const QUrl &pWidgetUrl, QGraphicsItem viewPalette.setBrush(QPalette::Window, QBrush(Qt::transparent)); setPalette(viewPalette); - UBGraphicsWidgetItemDelegate* delegate = new UBGraphicsWidgetItemDelegate(this); - delegate->init(); - setDelegate(delegate); + setDelegate(new UBGraphicsWidgetItemDelegate(this)); + Delegate()->init(); + + setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); + QGraphicsWebView::setAcceptHoverEvents(true); } @@ -97,11 +99,11 @@ UBGraphicsWidgetItem::~UBGraphicsWidgetItem() void UBGraphicsWidgetItem::initialize() { - UBGraphicsWebView::setMinimumSize(nominalSize()); + setMinimumSize(nominalSize()); setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); // Necessary to set if we want z value to be assigned correctly - if (mDelegate && mDelegate->frame() && resizable()) - mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); + if (Delegate() && Delegate()->frame() && resizable()) + Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); QPalette palette = page()->palette(); palette.setBrush(QPalette::Base, QBrush(Qt::transparent)); @@ -260,17 +262,6 @@ void UBGraphicsWidgetItem::removeAllDatastoreEntries() mDatastore.clear(); } -UBGraphicsItemDelegate* UBGraphicsWidgetItem::Delegate() const -{ - return mDelegate; -} - -void UBGraphicsWidgetItem::remove() -{ - if (mDelegate) - mDelegate->remove(); -} - void UBGraphicsWidgetItem::removeScript() { if (page() && page()->mainFrame()) @@ -360,6 +351,8 @@ QPixmap UBGraphicsWidgetItem::takeSnapshot() mIsTakingSnapshot = false; + mSnapshot = pixmap; + return pixmap; } @@ -502,7 +495,7 @@ bool UBGraphicsWidgetItem::event(QEvent *event) else if (event->type() == QEvent::ShortcutOverride) event->accept(); - return UBGraphicsWebView::event(event); + return QGraphicsWebView::event(event); } void UBGraphicsWidgetItem::dropEvent(QGraphicsSceneDragDropEvent *event) @@ -513,7 +506,10 @@ void UBGraphicsWidgetItem::dropEvent(QGraphicsSceneDragDropEvent *event) void UBGraphicsWidgetItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - UBGraphicsWebView::mousePressEvent(event); + if (!Delegate()->mousePressEvent(event)) + setSelected(true); /* forcing selection */ + + QGraphicsWebView::mousePressEvent(event); // did webkit consume the mouse press ? mShouldMoveWidget = !event->isAccepted() && (event->buttons() & Qt::LeftButton); @@ -527,24 +523,19 @@ void UBGraphicsWidgetItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { mShouldMoveWidget = false; - UBGraphicsWebView::mouseReleaseEvent(event); + Delegate()->mouseReleaseEvent(event); + QGraphicsWebView::mouseReleaseEvent(event); } void UBGraphicsWidgetItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { sendJSEnterEvent(); - mDelegate->hoverEnterEvent(event); - UBGraphicsWebView::hoverEnterEvent(event); + Delegate()->hoverEnterEvent(event); } void UBGraphicsWidgetItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { sendJSLeaveEvent(); - mDelegate->hoverLeaveEvent(event); - UBGraphicsWebView::hoverLeaveEvent(event); -} -void UBGraphicsWidgetItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) -{ - UBGraphicsWebView::hoverMoveEvent(event); + Delegate()->hoverLeaveEvent(event); } void UBGraphicsWidgetItem::sendJSEnterEvent() @@ -572,33 +563,40 @@ void UBGraphicsWidgetItem::injectInlineJavaScript() void UBGraphicsWidgetItem::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { - if (mIsFrozen) - painter->drawPixmap(0, 0, mSnapshot); + if (scene()->renderingContext() != UBGraphicsScene::Screen) + { + painter->drawPixmap(0, 0, snapshot()); + } else - UBGraphicsWebView::paint(painter, option, widget); - if (!mInitialLoadDone || mLoadIsErronous) { - QString message; + { + if (!mInitialLoadDone || mLoadIsErronous) + { + QString message; - if (mInitialLoadDone && mLoadIsErronous) - message = tr("Cannot load content"); - else - message = tr("Loading ..."); + if (mInitialLoadDone && mLoadIsErronous) + message = tr("Cannot load content"); + else + message = tr("Loading ..."); - painter->setFont(QFont("Arial", 12)); + painter->setFont(QFont("Arial", 12)); - QFontMetrics fm = painter->fontMetrics(); - QRect txtBoundingRect = fm.boundingRect(message); + QFontMetrics fm = painter->fontMetrics(); + QRect txtBoundingRect = fm.boundingRect(message); - txtBoundingRect.moveCenter(rect().center().toPoint()); - txtBoundingRect.adjust(-10, -5, 10, 5); + txtBoundingRect.moveCenter(rect().center().toPoint()); + txtBoundingRect.adjust(-10, -5, 10, 5); - painter->setPen(Qt::NoPen); - painter->setBrush(UBSettings::paletteColor); - painter->drawRoundedRect(txtBoundingRect, 3, 3); + painter->setPen(Qt::NoPen); + painter->setBrush(UBSettings::paletteColor); + painter->drawRoundedRect(txtBoundingRect, 3, 3); - painter->setPen(Qt::white); - painter->drawText(rect(), Qt::AlignCenter, message); + painter->setPen(Qt::white); + painter->drawText(rect(), Qt::AlignCenter, message); + } + else + QGraphicsWebView::paint(painter, option, widget); } + } void UBGraphicsWidgetItem::geometryChangeRequested(const QRect& geom) @@ -624,6 +622,52 @@ void UBGraphicsWidgetItem::mainFrameLoadFinished (bool ok) update(boundingRect()); } +void UBGraphicsWidgetItem::wheelEvent(QGraphicsSceneWheelEvent *event) +{ + if (Delegate()->weelEvent(event)) + { + QGraphicsWebView::wheelEvent(event); + event->accept(); + } +} + +QVariant UBGraphicsWidgetItem::itemChange(GraphicsItemChange change, const QVariant &value) +{ + if ((change == QGraphicsItem::ItemSelectedHasChanged) && scene()) { + if (isSelected()) + scene()->setActiveWindow(this); + else + if(scene()->activeWindow() == this) + scene()->setActiveWindow(0); + } + + QVariant newValue = Delegate()->itemChange(change, value); + return QGraphicsWebView::itemChange(change, newValue); +} + +void UBGraphicsWidgetItem::resize(qreal w, qreal h) +{ + UBGraphicsWidgetItem::resize(QSizeF(w, h)); +} + + +void UBGraphicsWidgetItem::resize(const QSizeF & pSize) +{ + if (pSize != size()) { + QGraphicsWebView::setMaximumSize(pSize.width(), pSize.height()); + QGraphicsWebView::resize(pSize.width(), pSize.height()); + if (Delegate()) + Delegate()->positionHandles(); + if (scene()) + scene()->setModified(true); + } +} + +QSizeF UBGraphicsWidgetItem::size() const +{ + return QGraphicsWebView::size(); +} + UBGraphicsAppleWidgetItem::UBGraphicsAppleWidgetItem(const QUrl& pWidgetUrl, QGraphicsItem *parent) @@ -881,21 +925,6 @@ UBItem* UBGraphicsW3CWidgetItem::deepCopy() const return copy; } -void UBGraphicsW3CWidgetItem::paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) -{ - UBGraphicsScene::RenderingContext rc = UBGraphicsScene::Screen; - - if (scene()) - rc = scene()->renderingContext(); - - if (rc == UBGraphicsScene::NonScreen || rc == UBGraphicsScene::PdfExport) { - if (!snapshot().isNull()) - painter->drawPixmap(0, 0, snapshot()); - } - else - UBGraphicsWidgetItem::paint(painter, option, widget); -} - QMap UBGraphicsW3CWidgetItem::preferences() { return mPreferences; diff --git a/src/domain/UBGraphicsWidgetItem.h b/src/domain/UBGraphicsWidgetItem.h index c7074e2a..10aeb2b7 100644 --- a/src/domain/UBGraphicsWidgetItem.h +++ b/src/domain/UBGraphicsWidgetItem.h @@ -19,10 +19,11 @@ #include #include -#include "UBGraphicsWebView.h" - #include "core/UB.h" +#include "UBItem.h" +#include "UBResizableGraphicsItem.h" + class UBWidgetUniboardAPI; class UBGraphicsScene; class UBW3CWidgetAPI; @@ -38,7 +39,7 @@ struct UBWidgetType }; }; -class UBGraphicsWidgetItem : public UBGraphicsWebView +class UBGraphicsWidgetItem : public QGraphicsWebView, public UBItem, public UBResizableGraphicsItem, public UBGraphicsItem { Q_OBJECT @@ -52,6 +53,10 @@ class UBGraphicsWidgetItem : public UBGraphicsWebView virtual void initialize(); + virtual void resize(qreal w, qreal h); + virtual void resize(const QSizeF & size); + virtual QSizeF size() const; + QUrl mainHtml(); void loadMainHtml(); QUrl widgetUrl(); @@ -75,9 +80,6 @@ class UBGraphicsWidgetItem : public UBGraphicsWebView void removeDatastoreEntry(const QString& key); void removeAllDatastoreEntries(); - virtual UBGraphicsItemDelegate* Delegate() const; - - virtual void remove(); void removeScript(); void processDropEvent(QGraphicsSceneDragDropEvent *event); @@ -140,16 +142,18 @@ class UBGraphicsWidgetItem : public UBGraphicsWebView QMap mDatastore; QMap mPreferences; + virtual bool event(QEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); - virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void sendJSEnterEvent(); virtual void sendJSLeaveEvent(); virtual void injectInlineJavaScript(); + virtual void wheelEvent(QGraphicsSceneWheelEvent *event); + virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); protected slots: @@ -230,7 +234,6 @@ class UBGraphicsW3CWidgetItem : public UBGraphicsWidgetItem virtual void setUuid(const QUuid &pUuid); virtual UBItem* deepCopy() const; virtual void copyItemParameters(UBItem *copy) const; - virtual void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget ); QMap preferences(); Metadata metadatas() const; diff --git a/src/domain/UBItem.cpp b/src/domain/UBItem.cpp index 10d3d6ce..11c18d94 100644 --- a/src/domain/UBItem.cpp +++ b/src/domain/UBItem.cpp @@ -38,6 +38,18 @@ UBItem::~UBItem() // NOOP } +UBGraphicsItem::~UBGraphicsItem() +{ + if (mDelegate!=NULL) + delete mDelegate; +} + +void UBGraphicsItem::setDelegate(UBGraphicsItemDelegate* delegate) +{ + Q_ASSERT(mDelegate==NULL); + mDelegate = delegate; +} + void UBGraphicsItem::assignZValue(QGraphicsItem *item, qreal value) { item->setZValue(value); @@ -54,6 +66,18 @@ bool UBGraphicsItem::isRotatable(QGraphicsItem *item) return item->data(UBGraphicsItemData::ItemRotatable).toBool(); } +QUuid UBGraphicsItem::getOwnUuid(QGraphicsItem *item) +{ + QString idCandidate = item->data(UBGraphicsItemData::ItemUuid).toString(); + return idCandidate == QUuid().toString() ? QUuid() : QUuid(idCandidate); +} + +void UBGraphicsItem::remove(bool canUndo) +{ + if (Delegate()) + Delegate()->remove(canUndo); +} + UBGraphicsItemDelegate *UBGraphicsItem::Delegate(QGraphicsItem *pItem) { UBGraphicsItemDelegate *result = 0; diff --git a/src/domain/UBItem.h b/src/domain/UBItem.h index ca8a0f3b..a74fd0b4 100644 --- a/src/domain/UBItem.h +++ b/src/domain/UBItem.h @@ -90,30 +90,30 @@ class UBItem class UBGraphicsItem { protected: - - UBGraphicsItem() : mDelegate(0) - { - // NOOP - } - UBGraphicsItemDelegate* mDelegate; - - virtual ~UBGraphicsItem() + UBGraphicsItem() : mDelegate(NULL) { // NOOP } + virtual ~UBGraphicsItem(); + void setDelegate(UBGraphicsItemDelegate* mDelegate); public: + inline UBGraphicsItemDelegate *Delegate() const { return mDelegate; } + static void assignZValue(QGraphicsItem*, qreal value); static bool isRotatable(QGraphicsItem *item); static bool isFlippable(QGraphicsItem *item); + static QUuid getOwnUuid(QGraphicsItem *item); static UBGraphicsItemDelegate *Delegate(QGraphicsItem *pItem); - virtual UBGraphicsItemDelegate *Delegate() const = 0; - virtual void remove() = 0; + void remove(bool canUndo = true); - virtual void clearSource(){;} + virtual void clearSource(){} + +private: + UBGraphicsItemDelegate* mDelegate; }; #endif // UBITEM_H diff --git a/src/domain/domain.pri b/src/domain/domain.pri index 1111106f..bb3751e4 100644 --- a/src/domain/domain.pri +++ b/src/domain/domain.pri @@ -6,7 +6,6 @@ HEADERS += src/domain/UBGraphicsScene.h \ src/domain/UBDocumentUndoCommand.h \ src/domain/UBPageSizeUndoCommand.h \ src/domain/UBGraphicsProxyWidget.h \ - src/domain/UBGraphicsWebView.h \ src/domain/UBGraphicsSvgItem.h \ src/domain/UBGraphicsPolygonItem.h \ src/domain/UBItem.h \ @@ -35,7 +34,6 @@ SOURCES += src/domain/UBGraphicsScene.cpp \ src/domain/UBDocumentUndoCommand.cpp \ src/domain/UBPageSizeUndoCommand.cpp \ src/domain/UBGraphicsProxyWidget.cpp \ - src/domain/UBGraphicsWebView.cpp \ src/domain/UBGraphicsSvgItem.cpp \ src/domain/UBGraphicsPolygonItem.cpp \ src/domain/UBItem.cpp \ @@ -47,8 +45,8 @@ SOURCES += src/domain/UBGraphicsScene.cpp \ src/domain/UBGraphicsStroke.cpp \ src/domain/UBGraphicsMediaItem.cpp \ src/domain/UBAbstractUndoCommand.cpp \ - src/domain/ubgraphicsgroupcontaineritem.cpp \ - src/domain/ubgraphicsgroupcontaineritemdelegate.cpp \ + src/domain/UBGraphicsGroupContainerItem.cpp \ + src/domain/UBGraphicsGroupContainerItemDelegate.cpp \ src/domain/UBGraphicsStrokesGroup.cpp \ src/domain/UBGraphicsItemGroupUndoCommand.cpp \ src/domain/UBGraphicsItemDelegate.cpp \ diff --git a/src/gui/UBDocumentNavigator.cpp b/src/gui/UBDocumentNavigator.cpp index e2de9970..90b45615 100644 --- a/src/gui/UBDocumentNavigator.cpp +++ b/src/gui/UBDocumentNavigator.cpp @@ -69,6 +69,9 @@ UBDocumentNavigator::~UBDocumentNavigator() } } +#include "gui/UBDockTeacherGuideWidget.h" +#include "gui/UBTeacherGuideWidget.h" + /** * \brief Generate the thumbnails */ @@ -84,10 +87,31 @@ void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source) for(int i = 0; i < source->selectedDocument()->pageCount(); i++) { + const QPixmap* pix = source->pageAt(i); - UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i); + QPixmap result(pix->width(),pix->height()); int pageIndex = UBDocumentContainer::pageFromSceneIndex(i); - QString label = pageIndex == 0 ? tr("Title page") : tr("Page %0").arg(pageIndex); + + QPainter composePainter; + composePainter.begin(&result); + composePainter.drawPixmap(QPoint(0,0),*pix); + + if(pageIndex == UBApplication::boardController->currentPage() && + ((pageIndex == 0 && UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) || + (pageIndex && UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool())) + ) { + if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()){ + QPixmap toque(":images/toque.png"); + composePainter.setOpacity(0.6); + composePainter.drawPixmap(QPoint(pix->width() - toque.width(),0),toque); + } + } + + composePainter.end(); + + UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(result, source->selectedDocument(), i); + + QString label = pageIndex == 0 ? tr("Title page") : tr("Page %0").arg(pageIndex); UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(label); UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem); @@ -104,7 +128,7 @@ void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source) void UBDocumentNavigator::onScrollToSelectedPage(int index) { - qDebug() << "Selection in widet: " << index; + qDebug() << "Selection in widget: " << index; int c = 0; foreach(UBImgTextThumbnailElement el, mThumbsWithLabels) { @@ -118,7 +142,6 @@ void UBDocumentNavigator::onScrollToSelectedPage(int index) } c++; } -// centerOn(mThumbsWithLabels[index].getThumbnail()); } /** @@ -131,8 +154,7 @@ void UBDocumentNavigator::updateSpecificThumbnail(int iPage) //UBGraphicsScene* pScene = UBApplication::boardController->activeScene(); const QPixmap* pix = UBApplication::boardController->pageAt(iPage); - UBSceneThumbnailNavigPixmap* newItem = new UBSceneThumbnailNavigPixmap(*pix, - UBApplication::boardController->selectedDocument(), iPage); + UBSceneThumbnailNavigPixmap* newItem = new UBSceneThumbnailNavigPixmap(*pix, UBApplication::boardController->selectedDocument(), iPage); // Get the old thumbnail UBSceneThumbnailNavigPixmap* oldItem = mThumbsWithLabels.at(iPage).getThumbnail(); diff --git a/src/gui/UBTeacherGuideWidget.cpp b/src/gui/UBTeacherGuideWidget.cpp index ca73ec76..09031a0c 100644 --- a/src/gui/UBTeacherGuideWidget.cpp +++ b/src/gui/UBTeacherGuideWidget.cpp @@ -20,7 +20,7 @@ #include #include #include - +#include #include "UBTeacherGuideWidget.h" @@ -163,7 +163,8 @@ UBTeacherGuideEditionWidget::~UBTeacherGuideEditionWidget() void UBTeacherGuideEditionWidget::onSliderMoved(int size) { Q_UNUSED(size); - mpAddAMediaItem->setExpanded(true); + if(mpAddAMediaItem) + mpAddAMediaItem->setExpanded(true); } #endif void UBTeacherGuideEditionWidget::showEvent(QShowEvent* event) @@ -491,7 +492,8 @@ UBTeacherGuidePresentationWidget::~UBTeacherGuidePresentationWidget() void UBTeacherGuidePresentationWidget::onSliderMoved(int size) { Q_UNUSED(size); - mpMediaSwitchItem->setExpanded(true); + if(mpMediaSwitchItem) + mpMediaSwitchItem->setExpanded(true); } #endif @@ -632,8 +634,11 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons QWidget(parent) , mpLayout(NULL) , mpButtonTitleLayout(NULL) + , mpContainerWidgetLayout(NULL) , mpModePushButton(NULL) , mpPageNumberLabel(NULL) + , mpScrollArea(NULL) + , mpContainerWidget(NULL) , mpSessionTitle(NULL) , mpSeparatorSessionTitle(NULL) , mpAuthorsLabel(NULL) @@ -673,6 +678,16 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons mpPageNumberLabel->setText(tr("Title page")); mpLayout->addWidget(mpPageNumberLabel); + mpScrollArea = new QScrollArea(); + mpContainerWidget = new QWidget(); + mpContainerWidgetLayout = new QVBoxLayout(); + + mpLayout->addWidget(mpScrollArea); + mpScrollArea->setWidget(mpContainerWidget); + mpScrollArea->setWidgetResizable(true); + mpScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + mpContainerWidget->setLayout(mpContainerWidgetLayout); + mpButtonTitleLayout = new QHBoxLayout(0); mpModePushButton = new QPushButton(this); @@ -684,132 +699,139 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons mpSessionTitle = new UBTGAdaptableText(0, this, "UBTGSessionTitle"); mpSessionTitle->setPlaceHolderText(tr("Type session title here ...")); + mpSessionTitle->setMaximumLength(1000); mpButtonTitleLayout->addWidget(mpSessionTitle); connect(this, SIGNAL(resized()), mpSessionTitle, SLOT(onTextChanged())); - mpLayout->addLayout(mpButtonTitleLayout); + mpContainerWidgetLayout->addLayout(mpButtonTitleLayout); mpSeparatorSessionTitle = new QFrame(this); mpSeparatorSessionTitle->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); mpSeparatorSessionTitle->setObjectName("UBTGSeparator"); - mpLayout->addWidget(mpSeparatorSessionTitle); + mpContainerWidgetLayout->addWidget(mpSeparatorSessionTitle); mpAuthorsLabel = new QLabel(this); mpAuthorsLabel->setObjectName("UBTGZeroPageEditionModeTitle"); mpAuthorsLabel->setText(tr("Author(s)")); mpAuthorsLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpAuthorsLabel); + mpContainerWidgetLayout->addWidget(mpAuthorsLabel); mpAuthors = new UBTGAdaptableText(0, this); mpAuthors->setObjectName("UBTGZeroPageInputText"); mpAuthors->setPlaceHolderText(tr("Type authors here ...")); - mpLayout->addWidget(mpAuthors); + mpContainerWidgetLayout->addWidget(mpAuthors); connect(this, SIGNAL(resized()), mpAuthors, SLOT(onTextChanged())); mpCreationLabel = new QLabel(this); mpCreationLabel->setObjectName("UBTGZeroPageDateLabel"); - mpLayout->addWidget(mpCreationLabel); + mpContainerWidgetLayout->addWidget(mpCreationLabel); mpLastModifiedLabel = new QLabel(this); mpLastModifiedLabel->setObjectName("UBTGZeroPageDateLabel"); - mpLayout->addWidget(mpLastModifiedLabel); + mpContainerWidgetLayout->addWidget(mpLastModifiedLabel); mpSeparatorAuthors = new QFrame(this); mpSeparatorAuthors->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); mpSeparatorAuthors->setObjectName("UBTGSeparator"); - mpLayout->addWidget(mpSeparatorAuthors); + mpContainerWidgetLayout->addWidget(mpSeparatorAuthors); mpObjectivesLabel = new QLabel(this); mpObjectivesLabel->setObjectName("UBTGZeroPageEditionModeTitle"); mpObjectivesLabel->setText(tr("Objective(s)")); mpObjectivesLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpObjectivesLabel); + mpContainerWidgetLayout->addWidget(mpObjectivesLabel); mpObjectives = new UBTGAdaptableText(0, this); mpObjectives->setObjectName("UBTGZeroPageInputText"); mpObjectives->setPlaceHolderText(tr("Type objectives here...")); - mpLayout->addWidget(mpObjectives); + mpContainerWidgetLayout->addWidget(mpObjectives); connect(this, SIGNAL(resized()), mpObjectives, SLOT(onTextChanged())); mpSeparatorObjectives = new QFrame(this); mpSeparatorObjectives->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); mpSeparatorObjectives->setObjectName("UBTGSeparator"); - mpLayout->addWidget(mpSeparatorObjectives); + mpContainerWidgetLayout->addWidget(mpSeparatorObjectives); mpIndexLabel = new QLabel(this); mpIndexLabel->setObjectName("UBTGZeroPageEditionModeTitle"); mpIndexLabel->setText(tr("Resource indexing")); mpIndexLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpIndexLabel); + mpContainerWidgetLayout->addWidget(mpIndexLabel); mpKeywordsLabel = new QLabel(this); mpKeywordsLabel->setObjectName("UBTGZeroPageItemLabel"); mpKeywordsLabel->setText(tr("Keywords:")); mpKeywordsLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpKeywordsLabel); + mpContainerWidgetLayout->addWidget(mpKeywordsLabel); mpKeywords = new UBTGAdaptableText(0, this); mpKeywords->setPlaceHolderText(tr("Type keywords here ...")); - mpLayout->addWidget(mpKeywords); + mpContainerWidgetLayout->addWidget(mpKeywords); connect(this, SIGNAL(resized()), mpKeywords, SLOT(onTextChanged())); mpSchoolLevelItemLabel = new QLabel(this); mpSchoolLevelItemLabel->setObjectName("UBTGZeroPageItemLabel"); mpSchoolLevelItemLabel->setText(tr("Level:")); mpSchoolLevelItemLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpSchoolLevelItemLabel); + mpContainerWidgetLayout->addWidget(mpSchoolLevelItemLabel); mpSchoolLevelBox = new QComboBox(this); mpSchoolLevelBox->setMinimumHeight(22); + mpSchoolLevelBox->setMinimumWidth(LOWER_RESIZE_WIDTH); mpSchoolLevelBox->setObjectName("DockPaletteWidgetComboBox"); connect(mpSchoolLevelBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(onSchoolLevelChanged(QString))); - mpLayout->addWidget(mpSchoolLevelBox); + mpContainerWidgetLayout->addWidget(mpSchoolLevelBox); mpSchoolLevelValueLabel = new QLabel(this); - mpLayout->addWidget(mpSchoolLevelValueLabel); + mpContainerWidgetLayout->addWidget(mpSchoolLevelValueLabel); mpSchoolSubjectsItemLabel = new QLabel(this); mpSchoolSubjectsItemLabel->setObjectName("UBTGZeroPageItemLabel"); mpSchoolSubjectsItemLabel->setText(tr("Subjects:")); mpSchoolSubjectsItemLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpSchoolSubjectsItemLabel); + mpContainerWidgetLayout->addWidget(mpSchoolSubjectsItemLabel); mpSchoolSubjectsBox = new QComboBox(this); mpSchoolSubjectsBox->setMinimumHeight(22); + mpSchoolSubjectsBox->setMinimumWidth(LOWER_RESIZE_WIDTH); mpSchoolSubjectsBox->setObjectName("DockPaletteWidgetComboBox"); - mpLayout->addWidget(mpSchoolSubjectsBox); + mpContainerWidgetLayout->addWidget(mpSchoolSubjectsBox); mpSchoolSubjectsValueLabel = new QLabel(this); - mpLayout->addWidget(mpSchoolSubjectsValueLabel); + mpContainerWidgetLayout->addWidget(mpSchoolSubjectsValueLabel); mpSchoolTypeItemLabel = new QLabel(this); mpSchoolTypeItemLabel->setObjectName("UBTGZeroPageItemLabel"); mpSchoolTypeItemLabel->setText(tr("Type:")); mpSchoolTypeItemLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpSchoolTypeItemLabel); + mpContainerWidgetLayout->addWidget(mpSchoolTypeItemLabel); mpSchoolTypeBox = new QComboBox(this); mpSchoolTypeBox->setMinimumHeight(22); + mpSchoolTypeBox->setMinimumWidth(LOWER_RESIZE_WIDTH); mpSchoolTypeBox->setObjectName("DockPaletteWidgetComboBox"); - mpLayout->addWidget(mpSchoolTypeBox); + mpContainerWidgetLayout->addWidget(mpSchoolTypeBox); mpSchoolTypeValueLabel = new QLabel(this); - mpLayout->addWidget(mpSchoolTypeValueLabel); + mpContainerWidgetLayout->addWidget(mpSchoolTypeValueLabel); mpSeparatorIndex = new QFrame(this); mpSeparatorIndex->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); mpSeparatorIndex->setObjectName("UBTGSeparator"); - mpLayout->addWidget(mpSeparatorIndex); + mpContainerWidgetLayout->addWidget(mpSeparatorIndex); mpLicenceLabel = new QLabel(this); mpLicenceLabel->setObjectName("UBTGZeroPageItemLabel"); mpLicenceLabel->setText(tr("Licence")); mpLicenceLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpLicenceLabel); + mpContainerWidgetLayout->addWidget(mpLicenceLabel); mpLicenceBox = new QComboBox(this); mpLicenceBox->setMinimumHeight(22); + mpLicenceBox->setMinimumWidth(LOWER_RESIZE_WIDTH); mpLicenceBox->setObjectName("DockPaletteWidgetComboBox"); - mpLayout->addWidget(mpLicenceBox); + mpContainerWidgetLayout->addWidget(mpLicenceBox); mpLicenceLayout = new QHBoxLayout(0); mpLicenceIcon = new QLabel(this); + mpLicenceIcon->setMinimumWidth(LOWER_RESIZE_WIDTH/2); mpLicenceLayout->addWidget(mpLicenceIcon); mpLicenceValueLabel = new QLabel(this); + mpLicenceValueLabel->setMinimumWidth(LOWER_RESIZE_WIDTH/2); mpLicenceLayout->addWidget(mpLicenceValueLabel); - mpLayout->addLayout(mpLicenceLayout); - mpLayout->addStretch(1); + mpContainerWidgetLayout->addLayout(mpLicenceLayout); + mpContainerWidgetLayout->addStretch(1); connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged())); fillComboBoxes(); @@ -845,6 +867,9 @@ UBTeacherGuidePageZeroWidget::~UBTeacherGuidePageZeroWidget() DELETEPTR(mpModePushButton); DELETEPTR(mpLicenceLayout); DELETEPTR(mpButtonTitleLayout); + DELETEPTR(mpContainerWidgetLayout); + DELETEPTR(mpContainerWidget); + DELETEPTR(mpScrollArea); DELETEPTR(mpLayout); } @@ -895,9 +920,9 @@ void UBTeacherGuidePageZeroWidget::fillComboBoxes() parametersFile.close(); QStringList licences; - licences << tr("Attribution CC BY") + licences << tr("Attribution-ShareAlike CC BY-SA") + << tr("Attribution CC BY") << tr("Attribution-NoDerivs CC BY-ND") - << tr("Attribution-ShareAlike CC BY-SA") << tr("Attribution-NonCommercial CC BY-NC") << tr("Attribution-NonCommercial-NoDerivs CC BY-NC-ND") << tr("Attribution-NonCommercial-ShareAlike CC BY-NC-SA") @@ -905,9 +930,9 @@ void UBTeacherGuidePageZeroWidget::fillComboBoxes() << tr("Copyright"); mpLicenceBox->addItems(licences); QStringList licenceIconList; - licenceIconList << ":images/licenses/ccby.png" + licenceIconList << ":images/licenses/ccbysa.png" + << ":images/licenses/ccby.png" << ":images/licenses/ccbynd.png" - << ":images/licenses/ccbysa.png" << ":images/licenses/ccbync.png" << ":images/licenses/ccbyncnd.png" << ":images/licenses/ccbyncsa.png"; @@ -923,7 +948,8 @@ void UBTeacherGuidePageZeroWidget::onSchoolLevelChanged(QString schoolLevel) mpSchoolSubjectsItemLabel->setEnabled(true); mpSchoolSubjectsBox->setEnabled(true); mpSchoolSubjectsBox->addItems(subjects); - } else { + } + else { mpSchoolSubjectsItemLabel->setDisabled(true); mpSchoolSubjectsBox->setDisabled(true); } @@ -1126,9 +1152,9 @@ bool UBTeacherGuidePageZeroWidget::isModified() return result; } -void UBTeacherGuidePageZeroWidget::resizeEvent(QResizeEvent* ev){ +void UBTeacherGuidePageZeroWidget::resizeEvent(QResizeEvent* ev) +{ emit resized(); - QWidget::resizeEvent(ev); } diff --git a/src/gui/UBTeacherGuideWidget.h b/src/gui/UBTeacherGuideWidget.h index a970807e..87cd081b 100644 --- a/src/gui/UBTeacherGuideWidget.h +++ b/src/gui/UBTeacherGuideWidget.h @@ -23,7 +23,7 @@ class QVBoxLayout; class QPushButton; class UBDocumentProxy; class UBGraphicsTextItem; - +class QScrollArea; #include "UBTeacherGuideWidgetsTools.h" @@ -35,6 +35,8 @@ typedef enum tUBTGZeroPageMode_PRESENTATION }tUBTGZeroPageMode; +#define LOWER_RESIZE_WIDTH 50 + /*************************************************************************** * class UBTeacherGuideEditionWidget * ***************************************************************************/ @@ -155,8 +157,13 @@ private: QVBoxLayout* mpLayout; QHBoxLayout* mpButtonTitleLayout; + QVBoxLayout* mpContainerWidgetLayout; QPushButton* mpModePushButton; QLabel* mpPageNumberLabel; + + QScrollArea* mpScrollArea; + QWidget* mpContainerWidget; + UBTGAdaptableText* mpSessionTitle; QFrame* mpSeparatorSessionTitle; diff --git a/src/gui/UBTeacherGuideWidgetsTools.cpp b/src/gui/UBTeacherGuideWidgetsTools.cpp index 6300c65b..4456b243 100644 --- a/src/gui/UBTeacherGuideWidgetsTools.cpp +++ b/src/gui/UBTeacherGuideWidgetsTools.cpp @@ -120,6 +120,7 @@ UBTGAdaptableText::UBTGAdaptableText(QTreeWidgetItem* widget, QWidget* parent, c , mMinimumHeight(0) , mHasPlaceHolder(false) , mIsUpdatingSize(false) + , mMaximumLength(0) { setObjectName(name); connect(this,SIGNAL(textChanged()),this,SLOT(onTextChanged())); @@ -131,6 +132,11 @@ UBTGAdaptableText::UBTGAdaptableText(QTreeWidgetItem* widget, QWidget* parent, c } +void UBTGAdaptableText::setMaximumLength(int length) +{ + mMaximumLength = length; +} + void UBTGAdaptableText::setPlaceHolderText(QString text) { mHasPlaceHolder = true; @@ -166,6 +172,12 @@ void UBTGAdaptableText::keyReleaseEvent(QKeyEvent* e) setTextColor(QColor(Qt::lightGray)); setPlainText(mPlaceHolderText); } + if(mMaximumLength && toPlainText().length()>mMaximumLength){ + setPlainText(toPlainText().left(mMaximumLength)); + QTextCursor tc(document()); + tc.setPosition(mMaximumLength); + setTextCursor(tc); + } } void UBTGAdaptableText::showEvent(QShowEvent* e) @@ -212,8 +224,10 @@ void UBTGAdaptableText::onTextChanged() setFocus(); } mIsUpdatingSize = false; + } + void UBTGAdaptableText::setInitialText(const QString& text) { setText(text); diff --git a/src/gui/UBTeacherGuideWidgetsTools.h b/src/gui/UBTeacherGuideWidgetsTools.h index e4ee8c53..2f87ccfd 100644 --- a/src/gui/UBTeacherGuideWidgetsTools.h +++ b/src/gui/UBTeacherGuideWidgetsTools.h @@ -97,6 +97,7 @@ public: void setPlaceHolderText(QString text); QString text(); void setInitialText(const QString& text); + void setMaximumLength(int length); public slots: void onTextChanged(); @@ -113,6 +114,7 @@ private: bool mHasPlaceHolder; QString mPlaceHolderText; bool mIsUpdatingSize; + int mMaximumLength; }; diff --git a/src/pdf-merger/Utils.cpp b/src/pdf-merger/Utils.cpp index 44b3ec91..f1fe14c2 100644 --- a/src/pdf-merger/Utils.cpp +++ b/src/pdf-merger/Utils.cpp @@ -14,6 +14,7 @@ */ #include +#include #include "Config.h" #include "Utils.h" #include "Exception.h" @@ -65,18 +66,12 @@ double Utils::stringToDouble(const std::string & s ) std::string Utils::uIntToStr(unsigned int integer) { - char str[10]; - snprintf(str, sizeof(str), "%u", integer); - return std::string(str); - + return std::string(QString::number(integer).toAscii()); } std::string Utils::doubleToStr(double doubleValue) { - char str[16]; - snprintf(str, sizeof(str), "%f", doubleValue); - return std::string(str); - + return std::string(QString::number(doubleValue).toAscii()); } int Utils::_stringToInt(const std::string & str) //throw ConvertException diff --git a/src/tools/UBGraphicsCurtainItem.cpp b/src/tools/UBGraphicsCurtainItem.cpp index a84d0234..bdb06614 100644 --- a/src/tools/UBGraphicsCurtainItem.cpp +++ b/src/tools/UBGraphicsCurtainItem.cpp @@ -37,8 +37,9 @@ const QColor UBGraphicsCurtainItem::sDarkBackgroundOpaqueControlColor = QColor(6 UBGraphicsCurtainItem::UBGraphicsCurtainItem(QGraphicsItem* parent) : QGraphicsRectItem(parent) { - mDelegate = new UBGraphicsCurtainItemDelegate(this, 0); - mDelegate->init(); + UBGraphicsCurtainItemDelegate* delegate = new UBGraphicsCurtainItemDelegate(this, 0); + delegate->init(); + setDelegate(delegate); setFlag(QGraphicsItem::ItemIsMovable, true); setFlag(QGraphicsItem::ItemIsSelectable, true); @@ -56,7 +57,6 @@ UBGraphicsCurtainItem::UBGraphicsCurtainItem(QGraphicsItem* parent) UBGraphicsCurtainItem::~UBGraphicsCurtainItem() { - delete mDelegate; } QVariant UBGraphicsCurtainItem::itemChange(GraphicsItemChange change, const QVariant &value) @@ -64,9 +64,9 @@ QVariant UBGraphicsCurtainItem::itemChange(GraphicsItemChange change, const QVar QVariant newValue = value; - if (mDelegate) + if (Delegate()) { - newValue = mDelegate->itemChange(change, value); + newValue = Delegate()->itemChange(change, value); } return QGraphicsRectItem::itemChange(change, newValue); @@ -80,7 +80,7 @@ void UBGraphicsCurtainItem::setUuid(const QUuid &pUuid) void UBGraphicsCurtainItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mousePressEvent(event)) + if (Delegate()->mousePressEvent(event)) { //NOOP } @@ -92,7 +92,7 @@ void UBGraphicsCurtainItem::mousePressEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsCurtainItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (mDelegate->mouseMoveEvent(event)) + if (Delegate()->mouseMoveEvent(event)) { // NOOP; } @@ -104,7 +104,7 @@ void UBGraphicsCurtainItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsCurtainItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - mDelegate->mouseReleaseEvent(event); + Delegate()->mouseReleaseEvent(event); QGraphicsRectItem::mouseReleaseEvent(event); } @@ -171,13 +171,6 @@ QColor UBGraphicsCurtainItem::opaqueControlColor() const } -void UBGraphicsCurtainItem::remove() -{ - if (mDelegate) - mDelegate->remove(true); -} - - void UBGraphicsCurtainItem::triggerRemovedSignal() { emit removed(); diff --git a/src/tools/UBGraphicsCurtainItem.h b/src/tools/UBGraphicsCurtainItem.h index afef3960..9f5d36d4 100644 --- a/src/tools/UBGraphicsCurtainItem.h +++ b/src/tools/UBGraphicsCurtainItem.h @@ -44,11 +44,8 @@ class UBGraphicsCurtainItem : public QObject, public QGraphicsRectItem, public U virtual UBItem* deepCopy() const; virtual void copyItemParameters(UBItem *copy) const; - virtual void remove(); - //TODO UB 4.x not nice ... void triggerRemovedSignal(); - virtual UBGraphicsItemDelegate* Delegate() const {return mDelegate;} virtual void clearSource(){;} virtual void setUuid(const QUuid &pUuid); diff --git a/src/tools/UBGraphicsCurtainItemDelegate.h b/src/tools/UBGraphicsCurtainItemDelegate.h index e1435170..18523fd7 100644 --- a/src/tools/UBGraphicsCurtainItemDelegate.h +++ b/src/tools/UBGraphicsCurtainItemDelegate.h @@ -40,13 +40,12 @@ class UBGraphicsCurtainItemDelegate : public UBGraphicsItemDelegate virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual void positionHandles(); + virtual void init(); + public slots: virtual void remove(bool checked, bool canUndo = true); - protected: - virtual void init(); - }; #endif /* UBGRAPHICSCURTAINITEMDELEGATE_H_ */ diff --git a/src/web/UBWebController.cpp b/src/web/UBWebController.cpp index 9ad0861e..e9d55be2 100644 --- a/src/web/UBWebController.cpp +++ b/src/web/UBWebController.cpp @@ -733,8 +733,8 @@ bool UBWebController::isEduMedia(const QUrl& pUrl) void UBWebController::loadUrl(const QUrl& url) { - bool webBrowserAlreadyInstanciated = dynamic_cast(mStackedWidget->widget(WebBrowser)) != NULL; - UBApplication::applicationController->showInternet(); + bool webBrowserAlreadyInstanciated = dynamic_cast(mStackedWidget->widget(WebBrowser)) != NULL; + UBApplication::applicationController->showInternet(); if (UBSettings::settings()->webUseExternalBrowser->get().toBool()) { QDesktopServices::openUrl(url);