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);