add a property to tell if fallback happened
add a property in Svg (and framesvgitem) to tell if the current theme has this image, or if some fallback did happen useful for items that are better not displayed than showing the potentially different default theme Change-Id: Ib914c0e196c5c941d35d9a600cc7d38818fc754f
This commit is contained in:
parent
68eadae6c8
commit
66a1a497ef
@ -257,6 +257,7 @@ FrameSvgItem::FrameSvgItem(QQuickItem *parent)
|
||||
setFlag(ItemHasContents, true);
|
||||
connect(m_frameSvg, SIGNAL(repaintNeeded()), this, SLOT(doUpdate()));
|
||||
connect(&m_units, &Units::devicePixelRatioChanged, this, &FrameSvgItem::updateDevicePixelRatio);
|
||||
connect(m_frameSvg, &Svg::fromCurrentThemeChanged, this, &FrameSvgItem::fromCurrentThemeChanged);
|
||||
}
|
||||
|
||||
FrameSvgItem::~FrameSvgItem()
|
||||
@ -338,6 +339,11 @@ FrameSvgItemMargins *FrameSvgItem::fixedMargins() const
|
||||
return m_fixedMargins;
|
||||
}
|
||||
|
||||
bool FrameSvgItem::fromCurrentTheme() const
|
||||
{
|
||||
return m_frameSvg->fromCurrentTheme();
|
||||
}
|
||||
|
||||
void FrameSvgItem::setEnabledBorders(const Plasma::FrameSvg::EnabledBorders borders)
|
||||
{
|
||||
if (m_frameSvg->enabledBorders() == borders) {
|
||||
|
@ -132,6 +132,11 @@ class FrameSvgItem : public QQuickItem
|
||||
*/
|
||||
Q_PROPERTY(Plasma::FrameSvg::EnabledBorders enabledBorders READ enabledBorders WRITE setEnabledBorders NOTIFY enabledBordersChanged)
|
||||
|
||||
/**
|
||||
* Holds whether the current svg is present in the current theme and NO fallback is involved
|
||||
*/
|
||||
Q_PROPERTY(bool fromCurrentTheme READ fromCurrentTheme NOTIFY fromCurrentThemeChanged)
|
||||
|
||||
public:
|
||||
/**
|
||||
* @return true if the svg has the necessary elements with the given prefix
|
||||
@ -156,6 +161,8 @@ public:
|
||||
FrameSvgItemMargins *margins() const;
|
||||
FrameSvgItemMargins *fixedMargins() const;
|
||||
|
||||
bool fromCurrentTheme() const;
|
||||
|
||||
void geometryChanged(const QRectF &newGeometry,
|
||||
const QRectF &oldGeometry);
|
||||
|
||||
@ -177,6 +184,7 @@ Q_SIGNALS:
|
||||
void imagePathChanged();
|
||||
void prefixChanged();
|
||||
void enabledBordersChanged();
|
||||
void fromCurrentThemeChanged();
|
||||
|
||||
private Q_SLOTS:
|
||||
void doUpdate();
|
||||
|
@ -111,6 +111,7 @@ public:
|
||||
qreal devicePixelRatio;
|
||||
bool multipleImages : 1;
|
||||
bool themed : 1;
|
||||
bool fromCurrentTheme : 1;
|
||||
bool applyColors : 1;
|
||||
bool usesColors : 1;
|
||||
bool cacheRendering : 1;
|
||||
|
@ -140,6 +140,7 @@ SvgPrivate::SvgPrivate(Svg *svg)
|
||||
devicePixelRatio(1.0),
|
||||
multipleImages(false),
|
||||
themed(false),
|
||||
fromCurrentTheme(false),
|
||||
applyColors(false),
|
||||
usesColors(false),
|
||||
cacheRendering(true),
|
||||
@ -202,6 +203,12 @@ bool SvgPrivate::setImagePath(const QString &imagePath)
|
||||
themePath.clear();
|
||||
localRectCache.clear();
|
||||
elementsWithSizeHints.clear();
|
||||
bool oldFromCurrentTheme = fromCurrentTheme;
|
||||
fromCurrentTheme = actualTheme()->currentThemeHasImage(imagePath);
|
||||
|
||||
if (fromCurrentTheme != oldFromCurrentTheme) {
|
||||
emit q->fromCurrentThemeChanged(fromCurrentTheme);
|
||||
}
|
||||
|
||||
if (themed) {
|
||||
themePath = actualPath;
|
||||
@ -857,6 +864,11 @@ bool Svg::isUsingRenderingCache() const
|
||||
return d->cacheRendering;
|
||||
}
|
||||
|
||||
bool Svg::fromCurrentTheme() const
|
||||
{
|
||||
return d->fromCurrentTheme;
|
||||
}
|
||||
|
||||
void Svg::setTheme(Plasma::Theme *theme)
|
||||
{
|
||||
if (!theme || theme == d->theme.data()) {
|
||||
|
@ -61,6 +61,7 @@ class PLASMA_EXPORT Svg : public QObject
|
||||
Q_PROPERTY(bool multipleImages READ containsMultipleImages WRITE setContainsMultipleImages)
|
||||
Q_PROPERTY(QString imagePath READ imagePath WRITE setImagePath NOTIFY imagePathChanged)
|
||||
Q_PROPERTY(bool usingRenderingCache READ isUsingRenderingCache WRITE setUsingRenderingCache)
|
||||
Q_PROPERTY(bool fromCurrentTheme READ fromCurrentTheme NOTIFY fromCurrentThemeChanged)
|
||||
Q_PROPERTY(Plasma::Theme::ColorGroup colorGroup READ colorGroup WRITE setColorGroup NOTIFY colorGroupChanged);
|
||||
|
||||
public:
|
||||
@ -368,6 +369,15 @@ public:
|
||||
*/
|
||||
bool isUsingRenderingCache() const;
|
||||
|
||||
/**
|
||||
* Wether the current theme has this Svg, without any fallback
|
||||
* to the default theme involved
|
||||
*
|
||||
* @return true if the svg is loaded from the current theme
|
||||
* @see Theme::currentThemeHasImage
|
||||
*/
|
||||
bool fromCurrentTheme() const;
|
||||
|
||||
/**
|
||||
* Sets the Plasma::Theme to use with this Svg object.
|
||||
*
|
||||
@ -423,6 +433,11 @@ Q_SIGNALS:
|
||||
*/
|
||||
void colorGroupChanged();
|
||||
|
||||
/**
|
||||
* Emitted when fromCurrentTheme() value has changed
|
||||
*/
|
||||
void fromCurrentThemeChanged(bool fromCurrentTheme);
|
||||
|
||||
private:
|
||||
SvgPrivate *const d;
|
||||
bool eventFilter(QObject *watched, QEvent *event);
|
||||
|
Loading…
Reference in New Issue
Block a user