You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
3.8 KiB
152 lines
3.8 KiB
/*
|
|
* 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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <QtGui>
|
|
#include <QtWebKit>
|
|
|
|
#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<UBGraphicsScene*>(QGraphicsItem::scene());
|
|
}
|
|
|
|
|
|
void UBGraphicsWebView::remove()
|
|
{
|
|
if (mDelegate)
|
|
mDelegate->remove(true);
|
|
}
|
|
|