Flipping and rotating possibilities for UBGraphicsGroupContainerItem

preferencesAboutTextFull
Ilia Ryabokon 12 years ago
parent 473b251514
commit da8c496f3e
  1. 3
      src/core/UB.h
  2. 35
      src/domain/UBGraphicsGroupContainerItem.cpp
  3. 4
      src/domain/UBGraphicsGroupContainerItemDelegate.cpp
  4. 22
      src/domain/UBGraphicsItemDelegate.cpp
  5. 5
      src/domain/UBGraphicsItemDelegate.h
  6. 1
      src/domain/UBGraphicsMediaItem.cpp
  7. 4
      src/domain/UBGraphicsMediaItemDelegate.cpp
  8. 4
      src/domain/UBGraphicsPixmapItem.cpp
  9. 9
      src/domain/UBGraphicsScene.cpp
  10. 2
      src/domain/UBGraphicsStrokesGroup.cpp
  11. 1
      src/domain/UBGraphicsSvgItem.cpp
  12. 2
      src/domain/UBGraphicsTextItem.cpp
  13. 2
      src/domain/UBGraphicsWebView.cpp
  14. 10
      src/domain/UBItem.cpp
  15. 3
      src/domain/UBItem.h
  16. 1
      src/gui/UBFeaturesWidget.h
  17. 1
      src/tools/UBGraphicsCurtainItem.cpp

@ -117,6 +117,9 @@ struct UBGraphicsItemData
, ItemOwnZValue , ItemOwnZValue
, itemLayerType //use instead of deprecated ItemLayerType , itemLayerType //use instead of deprecated ItemLayerType
, ItemUuid //storing uuid in QGraphicsItem for fast finding operations , ItemUuid //storing uuid in QGraphicsItem for fast finding operations
//Duplicating delegate's functions to make possible working with pure QGraphicsItem
, ItemFlippable // (bool)
, ItemRotatable // (bool)
}; };
}; };

@ -29,6 +29,7 @@ UBGraphicsGroupContainerItem::UBGraphicsGroupContainerItem(QGraphicsItem *parent
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
} }
void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item) void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item)
@ -42,6 +43,19 @@ void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item)
return; return;
} }
//Check if group is allready rotatable or flippable
if (childItems().count()) {
if (UBGraphicsItem::isFlippable(this) && !UBGraphicsItem::isFlippable(item)) {
mDelegate->setFlippable(false);
}
if (UBGraphicsItem::isRotatable(this) && !UBGraphicsItem::isRotatable(item)) {
mDelegate->setRotatable(false);
}
} else {
mDelegate->setFlippable(UBGraphicsItem::isFlippable(item));
mDelegate->setRotatable(UBGraphicsItem::isRotatable(item));
}
// COMBINE // COMBINE
bool ok; bool ok;
QTransform itemTransform = item->itemTransform(this, &ok); QTransform itemTransform = item->itemTransform(this, &ok);
@ -270,6 +284,27 @@ void UBGraphicsGroupContainerItem::pRemoveFromGroup(QGraphicsItem *item)
QGraphicsItem *newParent = parentItem(); QGraphicsItem *newParent = parentItem();
if (childItems().count()) {
if (!UBGraphicsItem::isFlippable(item) || !UBGraphicsItem::isRotatable(item)) {
bool flippableNow = true;
bool rotatableNow = true;
foreach (QGraphicsItem *item, childItems()) {
if (!UBGraphicsItem::isFlippable(item)) {
flippableNow = false;
}
if (!UBGraphicsItem::isRotatable(item)) {
rotatableNow = false;
}
if (!rotatableNow && !flippableNow) {
break;
}
}
mDelegate->setFlippable(flippableNow);
mDelegate->setRotatable(rotatableNow);
}
}
// COMBINE // COMBINE
bool ok; bool ok;
QTransform itemTransform; QTransform itemTransform;

@ -16,7 +16,9 @@ UBGraphicsGroupContainerItemDelegate::UBGraphicsGroupContainerItemDelegate(QGrap
UBGraphicsItemDelegate(pDelegated, parent, true, false, false), mDestroyGroupButton(0) UBGraphicsItemDelegate(pDelegated, parent, true, false, false), mDestroyGroupButton(0)
{ {
//Wrapper function. Use it to set correct data() to QGraphicsItem as well
setFlippable(false);
setRotatable(false);
} }
UBGraphicsGroupContainerItem *UBGraphicsGroupContainerItemDelegate::delegated() UBGraphicsGroupContainerItem *UBGraphicsGroupContainerItemDelegate::delegated()

@ -158,6 +158,10 @@ void UBGraphicsItemDelegate::init()
button->setFlag(QGraphicsItem::ItemIsSelectable, true); button->setFlag(QGraphicsItem::ItemIsSelectable, true);
} }
} }
//Wrapper function. Use it to set correct data() to QGraphicsItem as well
setFlippable(false);
setRotatable(false);
} }
@ -410,7 +414,7 @@ void UBGraphicsItemDelegate::remove(bool canUndo)
} }
bool UBGraphicsItemDelegate::isLocked() bool UBGraphicsItemDelegate::isLocked() const
{ {
return mDelegated->data(UBGraphicsItemData::ItemLocked).toBool(); return mDelegated->data(UBGraphicsItemData::ItemLocked).toBool();
} }
@ -598,6 +602,22 @@ void UBGraphicsItemDelegate::showMenu()
void UBGraphicsItemDelegate::setFlippable(bool flippable) void UBGraphicsItemDelegate::setFlippable(bool flippable)
{ {
mFlippable = flippable; mFlippable = flippable;
Q_ASSERT (mDelegated);
if (mDelegated) {
mDelegated->setData(UBGraphicsItemData::ItemFlippable, QVariant(flippable));
}
}
void UBGraphicsItemDelegate::setRotatable(bool pCanRotate)
{
mCanRotate = pCanRotate;
Q_ASSERT(mDelegated);
if (mDelegated) {
mDelegated->setData(UBGraphicsItemData::ItemRotatable, QVariant(pCanRotate));
}
} }
bool UBGraphicsItemDelegate::isFlippable() bool UBGraphicsItemDelegate::isFlippable()

@ -224,8 +224,8 @@ class UBGraphicsItemDelegate : public QObject
UBGraphicsDelegateFrame* frame() { return mFrame; } UBGraphicsDelegateFrame* frame() { return mFrame; }
bool canRotate() { return mCanRotate; } bool canRotate() const { return mCanRotate; }
bool isLocked(); bool isLocked() const;
bool canDuplicate() { return mCanDuplicate; } bool canDuplicate() { return mCanDuplicate; }
QMimeData* mimeData(){ return mMimeData; } QMimeData* mimeData(){ return mMimeData; }
@ -233,6 +233,7 @@ class UBGraphicsItemDelegate : public QObject
void setDragPixmap(const QPixmap &pix) {mDragPixmap = pix;} void setDragPixmap(const QPixmap &pix) {mDragPixmap = pix;}
void setFlippable(bool flippable); void setFlippable(bool flippable);
void setRotatable(bool pCanRotate);
bool isFlippable(); bool isFlippable();
void setButtonsVisible(bool visible); void setButtonsVisible(bool visible);

@ -131,7 +131,6 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
connect(mDelegate, SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool))); connect(mDelegate, SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool)));
connect(mMediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasMediaChanged(bool))); connect(mMediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasMediaChanged(bool)));
} }

@ -56,6 +56,10 @@ UBGraphicsMediaItemDelegate::UBGraphicsMediaItemDelegate(UBGraphicsMediaItem* pD
{ {
delegated()->setMute(true); delegated()->setMute(true);
} }
//Wrapper function. Use it to set correct data() to QGraphicsItem as well
setFlippable(false);
setRotatable(false);
} }
bool UBGraphicsMediaItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event) bool UBGraphicsMediaItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event)

@ -28,10 +28,10 @@
UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent) UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent)
: QGraphicsPixmapItem(parent) : QGraphicsPixmapItem(parent)
{ {
mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false); mDelegate = new UBGraphicsItemDelegate(this, 0, true);
mDelegate->init(); mDelegate->init();
mDelegate->setFlippable(true); mDelegate->setFlippable(true);
mDelegate->setRotatable(true);
setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
setTransformationMode(Qt::SmoothTransformation); setTransformationMode(Qt::SmoothTransformation);

@ -308,9 +308,10 @@ UBGraphicsScene::~UBGraphicsScene()
void UBGraphicsScene::selectionChangedProcessing() void UBGraphicsScene::selectionChangedProcessing()
{ {
if (selectedItems().count()){ if (selectedItems().count()){
qDebug() << "Selected item bounding rect: " << selectedItems().first()->boundingRect(); // UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f') + "own z value is "
UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f') + "own z value is " // + QString::number(selectedItems().first()->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f'));
+ QString::number(selectedItems().first()->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f')); qDebug() << "flippable" << selectedItems().first()->data(UBGraphicsItemData::ItemFlippable).toBool() << endl
<< "rotatable" << selectedItems().first()->data(UBGraphicsItemData::ItemRotatable).toBool();
} }
} }
@ -1998,8 +1999,6 @@ void UBGraphicsScene::moveMagnifier(QPoint newPos, bool forceGrab)
QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0)); QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0));
QRect qcr = cView->geometry();
QRect qdr = dView->geometry();
int cvW = cView->width(); int cvW = cView->width();
int dvW = dView->width(); int dvW = dView->width();
qreal wCoeff = (qreal)dvW / (qreal)cvW; qreal wCoeff = (qreal)dvW / (qreal)cvW;

@ -9,6 +9,8 @@ UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent):QGraphicsI
mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false); mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false);
mDelegate->init(); mDelegate->init();
mDelegate->setFlippable(true); mDelegate->setFlippable(true);
mDelegate->setRotatable(true);
setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
setUuid(QUuid::createUuid()); setUuid(QUuid::createUuid());

@ -56,6 +56,7 @@ void UBGraphicsSvgItem::init()
mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false); mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false);
mDelegate->init(); mDelegate->init();
mDelegate->setFlippable(true); mDelegate->setFlippable(true);
mDelegate->setRotatable(true);
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);

@ -38,6 +38,8 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent)
mDelegate->init(); mDelegate->init();
mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
mDelegate->setFlippable(false);
mDelegate->setRotatable(true);
mTypeTextHereLabel = tr("<Type Text Here>"); mTypeTextHereLabel = tr("<Type Text Here>");

@ -28,7 +28,7 @@ UBGraphicsWebView::UBGraphicsWebView(QGraphicsItem* parent)
{ {
setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
mDelegate = new UBGraphicsItemDelegate(this, 0, true, false, false); mDelegate = new UBGraphicsItemDelegate(this, 0, true);
mDelegate->init(); mDelegate->init();
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);

@ -34,3 +34,13 @@ void UBGraphicsItem::assignZValue(QGraphicsItem *item, qreal value)
item->setZValue(value); item->setZValue(value);
item->setData(UBGraphicsItemData::ItemOwnZValue, value); item->setData(UBGraphicsItemData::ItemOwnZValue, value);
} }
bool UBGraphicsItem::isFlippable(QGraphicsItem *item)
{
return item->data(UBGraphicsItemData::ItemFlippable).toBool();
}
bool UBGraphicsItem::isRotatable(QGraphicsItem *item)
{
return item->data(UBGraphicsItemData::ItemRotatable).toBool();
}

@ -105,6 +105,9 @@ protected:
public: public:
static void assignZValue(QGraphicsItem*, qreal value); static void assignZValue(QGraphicsItem*, qreal value);
static bool isRotatable(QGraphicsItem *item);
static bool isFlippable(QGraphicsItem *item);
virtual UBGraphicsItemDelegate *Delegate() const = 0; virtual UBGraphicsItemDelegate *Delegate() const = 0;
virtual void remove() = 0; virtual void remove() = 0;

@ -248,7 +248,6 @@ private slots:
void setFileNameList(const QStringList &pLst); void setFileNameList(const QStringList &pLst);
void reactOnTextChanged(const QString &pStr); void reactOnTextChanged(const QString &pStr);
private: private:
QLineEdit *mLineEdit; QLineEdit *mLineEdit;
QRegExpValidator *mValidator; QRegExpValidator *mValidator;

@ -39,6 +39,7 @@ UBGraphicsCurtainItem::UBGraphicsCurtainItem(QGraphicsItem* parent)
{ {
mDelegate = new UBGraphicsCurtainItemDelegate(this, 0); mDelegate = new UBGraphicsCurtainItemDelegate(this, 0);
mDelegate->init(); mDelegate->init();
setFlag(QGraphicsItem::ItemIsMovable, true); setFlag(QGraphicsItem::ItemIsMovable, true);
setFlag(QGraphicsItem::ItemIsSelectable, true); setFlag(QGraphicsItem::ItemIsSelectable, true);

Loading…
Cancel
Save