port screenedge effect to KSvg

Part of https://invent.kde.org/frameworks/ksvg/-/issues/1.

Port the linked usage of Plasma::Svg to KSvg::Svg, still
syncing with the Plasma style.
master
Marco Martin 1 year ago
parent bb18d9fbac
commit 54b3c2c6b6

@ -82,7 +82,6 @@ find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
I18n I18n
IdleTime IdleTime
Package Package
Plasma
Service Service
Svg Svg
WidgetsAddons WidgetsAddons
@ -136,7 +135,13 @@ add_feature_info("KF6Runner" KF6Runner_FOUND "Enable building of KWin with krunn
find_package(KF6Kirigami2 ${KF6_MIN_VERSION} CONFIG) find_package(KF6Kirigami2 ${KF6_MIN_VERSION} CONFIG)
set_package_properties(KF6Kirigami2 PROPERTIES set_package_properties(KF6Kirigami2 PROPERTIES
DESCRIPTION "A QtQuick based components set" DESCRIPTION "A QtQuick based components set"
PURPOSE "Required at runtime for Virtual desktop KCM" PURPOSE "Required at runtime for several QML effects"
TYPE RUNTIME
)
find_package(KF6Plasma ${KF6_MIN_VERSION} CONFIG)
set_package_properties(KF6Plasma PROPERTIES
DESCRIPTION "A QtQuick based components set"
PURPOSE "Required at runtime for several QML effects"
TYPE RUNTIME TYPE RUNTIME
) )

@ -12,5 +12,6 @@ target_link_libraries(screenedge PRIVATE
kwineffects kwineffects
kwinglutils kwinglutils
KF6::Plasma KF6::Svg
KF6::ConfigCore
) )

@ -13,8 +13,11 @@
#include "libkwineffects/rendertarget.h" #include "libkwineffects/rendertarget.h"
#include "libkwineffects/renderviewport.h" #include "libkwineffects/renderviewport.h"
// KDE // KDE
#include <Plasma/Svg> #include <KConfigGroup>
#include <KSharedConfig>
#include <KSvg/Svg>
// Qt // Qt
#include <QFile>
#include <QPainter> #include <QPainter>
#include <QTimer> #include <QTimer>
#include <QVector4D> #include <QVector4D>
@ -45,7 +48,23 @@ ScreenEdgeEffect::~ScreenEdgeEffect()
void ScreenEdgeEffect::ensureGlowSvg() void ScreenEdgeEffect::ensureGlowSvg()
{ {
if (!m_glow) { if (!m_glow) {
m_glow = new Plasma::Svg(this); m_glow = new KSvg::Svg(this);
m_glow->imageSet()->setBasePath(QStringLiteral("plasma/desktoptheme"));
const QString groupName = QStringLiteral("Theme");
KSharedConfig::Ptr config = KSharedConfig::openConfig(QStringLiteral("plasmarc"));
KConfigGroup cg = KConfigGroup(config, groupName);
m_glow->imageSet()->setImageSetName(cg.readEntry("name", QStringLiteral("default")));
m_configWatcher = KConfigWatcher::create(config);
connect(m_configWatcher.data(), &KConfigWatcher::configChanged, this, [this](const KConfigGroup &group, const QByteArrayList &names) {
if (group.name() != QStringLiteral("Theme") || !names.contains(QStringLiteral("name"))) {
return;
}
m_glow->imageSet()->setImageSetName(group.readEntry("name", QStringLiteral("default")));
});
m_glow->setImagePath(QStringLiteral("widgets/glowbar")); m_glow->setImagePath(QStringLiteral("widgets/glowbar"));
} }
} }

@ -9,8 +9,10 @@
#pragma once #pragma once
#include "libkwineffects/kwineffects.h" #include "libkwineffects/kwineffects.h"
#include <KConfigWatcher>
class QTimer; class QTimer;
namespace Plasma namespace KSvg
{ {
class Svg; class Svg;
} }
@ -45,7 +47,8 @@ private:
QImage createCornerGlow(ElectricBorder border); QImage createCornerGlow(ElectricBorder border);
QImage createEdgeGlow(ElectricBorder border, const QSize &size); QImage createEdgeGlow(ElectricBorder border, const QSize &size);
QSize cornerGlowSize(ElectricBorder border); QSize cornerGlowSize(ElectricBorder border);
Plasma::Svg *m_glow = nullptr; KConfigWatcher::Ptr m_configWatcher;
KSvg::Svg *m_glow = nullptr;
std::map<ElectricBorder, std::unique_ptr<Glow>> m_borders; std::map<ElectricBorder, std::unique_ptr<Glow>> m_borders;
QTimer *m_cleanupTimer; QTimer *m_cleanupTimer;
}; };

Loading…
Cancel
Save