* share Svg in SvgItem
* the usecase is pretty different compared to FrameSvg, that will retain the old api svn path=/trunk/KDE/kdebase/runtime/; revision=1193392
This commit is contained in:
parent
1696ca5d8a
commit
54daa3153d
@ -30,9 +30,8 @@ namespace Plasma
|
||||
SvgItem::SvgItem(QDeclarativeItem *parent)
|
||||
: QDeclarativeItem(parent)
|
||||
{
|
||||
m_svg = new Plasma::Svg(this);
|
||||
setFlag(QGraphicsItem::ItemHasNoContents, false);
|
||||
connect(m_svg, SIGNAL(repaintNeeded()), this, SLOT(update()));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -40,22 +39,8 @@ SvgItem::~SvgItem()
|
||||
{
|
||||
}
|
||||
|
||||
void SvgItem::setImagePath(const QString &path)
|
||||
{
|
||||
m_svg->setImagePath(path);
|
||||
update();
|
||||
}
|
||||
|
||||
QString SvgItem::imagePath() const
|
||||
{
|
||||
return m_svg->imagePath();
|
||||
}
|
||||
|
||||
|
||||
void SvgItem::setElementId(const QString &elementID)
|
||||
{
|
||||
m_svg->setContainsMultipleImages(!elementID.isNull());
|
||||
|
||||
m_elementID = elementID;
|
||||
update();
|
||||
}
|
||||
@ -65,12 +50,31 @@ QString SvgItem::elementId() const
|
||||
return m_elementID;
|
||||
}
|
||||
|
||||
void SvgItem::setSvg(Plasma::Svg *svg)
|
||||
{
|
||||
if (m_svg) {
|
||||
disconnect(m_svg.data(), 0, this, 0);
|
||||
}
|
||||
m_svg = svg;
|
||||
connect(svg, SIGNAL(repaintNeeded()), this, SLOT(update()));
|
||||
}
|
||||
|
||||
Plasma::Svg *SvgItem::svg() const
|
||||
{
|
||||
return m_svg.data();
|
||||
}
|
||||
|
||||
void SvgItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
|
||||
{
|
||||
Q_UNUSED(option);
|
||||
Q_UNUSED(widget);
|
||||
|
||||
m_svg->paint(painter, boundingRect(), m_elementID);
|
||||
if (!m_svg) {
|
||||
return;
|
||||
}
|
||||
//setContainsMultipleImages has to be done there since m_frameSvg can be shared with somebody else
|
||||
m_svg.data()->setContainsMultipleImages(!m_elementID.isEmpty());
|
||||
m_svg.data()->paint(painter, boundingRect(), m_elementID);
|
||||
}
|
||||
|
||||
} // Plasma namespace
|
||||
|
@ -29,23 +29,23 @@ class SvgItem : public QDeclarativeItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(QString imagePath READ imagePath WRITE setImagePath)
|
||||
Q_PROPERTY(QString elementId READ elementId WRITE setElementId)
|
||||
Q_PROPERTY(Plasma::Svg * svg READ svg WRITE setSvg)
|
||||
|
||||
public:
|
||||
SvgItem(QDeclarativeItem *parent=0);
|
||||
~SvgItem();
|
||||
|
||||
void setImagePath(const QString &path);
|
||||
QString imagePath() const;
|
||||
|
||||
void setElementId(const QString &elementID);
|
||||
QString elementId() const;
|
||||
|
||||
void setSvg(Plasma::Svg *svg);
|
||||
Plasma::Svg *svg() const;
|
||||
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
||||
|
||||
private:
|
||||
Plasma::Svg *m_svg;
|
||||
QWeakPointer<Plasma::Svg> m_svg;
|
||||
QString m_elementID;
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user