File indexing completed on 2025-02-09 06:41:24

0001 /*
0002     SPDX-FileCopyrightText: 2023 Marco Martin <mart@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "dialogbackground_p.h"
0008 
0009 #include <QQmlComponent>
0010 #include <qquickitem.h>
0011 
0012 #include "sharedqmlengine.h"
0013 
0014 namespace PlasmaQuick
0015 {
0016 
0017 DialogBackground::DialogBackground(QQuickItem *parent)
0018     : QQuickItem(parent)
0019     , m_sharedEngine(new SharedQmlEngine(this))
0020 {
0021     QQmlComponent component(m_sharedEngine->engine().get(), QStringLiteral(":/DialogBackground.qml"));
0022 
0023     QVariantHash props({{QStringLiteral("parent"), QVariant::fromValue(this)}});
0024     QObject *object = m_sharedEngine->createObjectFromComponent(&component, m_sharedEngine->rootContext(), props);
0025 
0026     m_frameSvgItem = qobject_cast<QQuickItem *>(object);
0027     Q_ASSERT(m_frameSvgItem);
0028 
0029     connect(m_frameSvgItem, SIGNAL(maskChanged()), this, SIGNAL(maskChanged()));
0030     connect(m_frameSvgItem->property("fixedMargins").value<QObject *>(), SIGNAL(marginsChanged()), this, SIGNAL(fixedMarginsChanged()));
0031 }
0032 
0033 DialogBackground::~DialogBackground()
0034 {
0035 }
0036 
0037 QString DialogBackground::imagePath() const
0038 {
0039     return m_frameSvgItem->property("imagePath").toString();
0040 }
0041 
0042 void DialogBackground::setImagePath(const QString &path)
0043 {
0044     m_frameSvgItem->setProperty("imagePath", path);
0045 }
0046 
0047 void DialogBackground::setEnabledBorders(const KSvg::FrameSvg::EnabledBorders borders)
0048 {
0049     m_frameSvgItem->setProperty("enabledBorders", QVariant::fromValue(borders));
0050 }
0051 
0052 KSvg::FrameSvg::EnabledBorders DialogBackground::enabledBorders() const
0053 {
0054     return m_frameSvgItem->property("enabledBorders").value<KSvg::FrameSvg::EnabledBorders>();
0055 }
0056 
0057 QRegion DialogBackground::mask() const
0058 {
0059     return m_frameSvgItem->property("mask").value<QRegion>();
0060 }
0061 
0062 qreal DialogBackground::leftMargin() const
0063 {
0064     // assume margins is valid, as we asserted it's a valid FrameSvgItem
0065     QObject *margins = m_frameSvgItem->property("fixedMargins").value<QObject *>();
0066     return margins->property("left").value<qreal>();
0067 }
0068 
0069 qreal DialogBackground::topMargin() const
0070 {
0071     QObject *margins = m_frameSvgItem->property("fixedMargins").value<QObject *>();
0072     return margins->property("top").value<qreal>();
0073 }
0074 
0075 qreal DialogBackground::rightMargin() const
0076 {
0077     QObject *margins = m_frameSvgItem->property("fixedMargins").value<QObject *>();
0078     return margins->property("right").value<qreal>();
0079 }
0080 
0081 qreal DialogBackground::bottomMargin() const
0082 {
0083     QObject *margins = m_frameSvgItem->property("fixedMargins").value<QObject *>();
0084     return margins->property("bottom").value<qreal>();
0085 }
0086 
0087 QObject *DialogBackground::fixedMargins() const
0088 {
0089     return m_frameSvgItem->property("fixedMargins").value<QObject *>();
0090 }
0091 
0092 QObject *DialogBackground::inset() const
0093 {
0094     return m_frameSvgItem->property("inset").value<QObject *>();
0095 }
0096 }
0097 
0098 #include "private/moc_dialogbackground_p.cpp"