Commit aedebaf2 authored by Craig Watson's avatar Craig Watson

Add "set as background" to frame menu for images

Images (UBGraphicsPixmapitem and UBGraphicsSvgItem) can be set as
background via the menu on their frame. Currently, the image is first
centered and un-transformed before being set as background.

The option in the frame appears for any UBGraphicsItem for which
`data(UBGraphicsItemData::ItemCanBeSetAsBackground)` is true.

This is (currently) only enabled for image items.
parent ee5ad4a1
......@@ -137,6 +137,7 @@ struct UBGraphicsItemData
//Duplicating delegate's functions to make possible working with pure QGraphicsItem
, ItemFlippable // (bool)
, ItemRotatable // (bool)
, ItemCanBeSetAsBackground
};
};
......
......@@ -596,6 +596,18 @@ void UBGraphicsItemDelegate::showHide(bool show)
emit showOnDisplayChanged(show);
}
void UBGraphicsItemDelegate::setAsBackground()
{
UBGraphicsScene* scene = castUBGraphicsScene();
QGraphicsItem* item = delegated();
if (scene && item) {
item->resetTransform();
item->setPos(item->sceneBoundingRect().width()/-2., item->sceneBoundingRect().height()/-2.);
scene->setAsBackgroundObject(item);
}
}
void UBGraphicsItemDelegate::gotoContentSource()
{
......@@ -681,6 +693,11 @@ void UBGraphicsItemDelegate::decorateMenu(QMenu* menu)
showIcon.addPixmap(QPixmap(":/images/eyeClosed.svg"), QIcon::Normal, QIcon::Off);
mShowOnDisplayAction->setIcon(showIcon);
if (delegated()->data(UBGraphicsItemData::ItemCanBeSetAsBackground).toBool()) {
mSetAsBackgroundAction = mMenu->addAction(tr("Set as background"), this, SLOT(setAsBackground()));
mSetAsBackgroundAction->setCheckable(false);
}
if (testUBFlags(GF_SHOW_CONTENT_SOURCE))
{
mGotoContentSourceAction = menu->addAction(tr("Go to Content Source"), this, SLOT(gotoContentSource()));
......
......@@ -343,6 +343,7 @@ class UBGraphicsItemDelegate : public QObject
QAction* mLockAction;
QAction* mShowOnDisplayAction;
QAction* mSetAsBackgroundAction;
QAction* mGotoContentSourceAction;
UBGraphicsDelegateFrame* mFrame;
......@@ -354,6 +355,7 @@ class UBGraphicsItemDelegate : public QObject
UBGraphicsToolBarItem* mToolBarItem;
protected slots:
virtual void setAsBackground();
virtual void gotoContentSource();
private:
......
......@@ -61,6 +61,8 @@ UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent)
setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
setData(UBGraphicsItemData::ItemCanBeSetAsBackground, true);
setUuid(QUuid::createUuid()); //more logical solution is in creating uuid for element in element's constructor
}
......
......@@ -87,6 +87,8 @@ void UBGraphicsSvgItem::init()
setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
setData(UBGraphicsItemData::ItemCanBeSetAsBackground, true);
setUuid(QUuid::createUuid());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment