From 23059285cf905637f1e2fe2635b30deee64e7441 Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Sun, 20 Aug 2023 16:41:37 +0200 Subject: [PATCH] kcms/screenedges: Port to KSvg Removes the dependency on Plasma Framework from the KCMs. This won't use the current Plasma theme but always the default one. However, the monitor graphic hasn't really been used anywhere else anymore (it used to be in e.g. the wallpaper settings in Plasma 4), so I think this is alright. --- src/kcms/screenedges/CMakeLists.txt | 2 +- src/kcms/screenedges/monitor.cpp | 5 +++-- src/kcms/screenedges/monitor.h | 4 ++-- src/kcms/screenedges/screenpreviewwidget.cpp | 20 ++++++++++++++++---- src/kcms/screenedges/screenpreviewwidget.h | 6 ++++++ 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/kcms/screenedges/CMakeLists.txt b/src/kcms/screenedges/CMakeLists.txt index b068b5007f..2ffb7ad6b5 100644 --- a/src/kcms/screenedges/CMakeLists.txt +++ b/src/kcms/screenedges/CMakeLists.txt @@ -31,7 +31,7 @@ set(kcm_screenedges_LIBS KF6::KCMUtils KF6::I18n KF6::Package - KF6::Plasma + KF6::Svg ) target_link_libraries(kcm_kwinscreenedges ${X11_LIBRARIES} ${kcm_screenedges_LIBS}) diff --git a/src/kcms/screenedges/monitor.cpp b/src/kcms/screenedges/monitor.cpp index 327938eb2e..27a6234b24 100644 --- a/src/kcms/screenedges/monitor.cpp +++ b/src/kcms/screenedges/monitor.cpp @@ -11,7 +11,7 @@ #include "monitor.h" #include -#include +#include #include #include @@ -211,8 +211,9 @@ void Monitor::flip(Corner *c, QPoint pos) Monitor::Corner::Corner(Monitor *m) : m_monitor(m) - , m_button(std::make_unique()) + , m_button(std::make_unique()) { + m_button->setImageSet(m->svgImageSet()); m_button->setImagePath("widgets/button"); setAcceptHoverEvents(true); } diff --git a/src/kcms/screenedges/monitor.h b/src/kcms/screenedges/monitor.h index 0829e5d8d2..68d38de583 100644 --- a/src/kcms/screenedges/monitor.h +++ b/src/kcms/screenedges/monitor.h @@ -23,7 +23,7 @@ class QGraphicsView; class QGraphicsScene; class QMenu; -namespace Plasma +namespace KSvg { class FrameSvg; } @@ -98,7 +98,7 @@ protected: private: Monitor *const m_monitor; - const std::unique_ptr m_button; + const std::unique_ptr m_button; bool m_active = false; bool m_hover = false; }; diff --git a/src/kcms/screenedges/screenpreviewwidget.cpp b/src/kcms/screenedges/screenpreviewwidget.cpp index 4599af248b..87be00280b 100644 --- a/src/kcms/screenedges/screenpreviewwidget.cpp +++ b/src/kcms/screenedges/screenpreviewwidget.cpp @@ -13,9 +13,12 @@ #include #include -#include +#include +#include #include +#include + class ScreenPreviewWidgetPrivate { public: @@ -36,7 +39,7 @@ public: void updateScreenGraphics() { - int bottomElements = screenGraphics->elementSize("base").height() + screenGraphics->marginSize(Plasma::Types::BottomMargin); + int bottomElements = screenGraphics->elementSize("base").height() + screenGraphics->marginSize(KSvg::FrameSvg::BottomMargin); QRect bounds(QPoint(0, 0), QSize(q->size().width(), q->height() - bottomElements)); QSize monitorSize(q->size().width(), q->size().width() / ratio); @@ -56,7 +59,8 @@ public: } ScreenPreviewWidget *q; - Plasma::FrameSvg *screenGraphics; + std::unique_ptr svgImageSet; + KSvg::FrameSvg *screenGraphics; QPixmap preview; QRect monitorRect; qreal ratio; @@ -67,7 +71,10 @@ ScreenPreviewWidget::ScreenPreviewWidget(QWidget *parent) : QWidget(parent) , d(std::make_unique(this)) { - d->screenGraphics = new Plasma::FrameSvg(this); + d->svgImageSet = std::make_unique(); + d->svgImageSet->setBasePath("plasma/desktoptheme"); + d->screenGraphics = new KSvg::FrameSvg(this); + d->screenGraphics->setImageSet(d->svgImageSet.get()); d->screenGraphics->setImagePath("widgets/monitor"); d->updateScreenGraphics(); } @@ -102,6 +109,11 @@ QRect ScreenPreviewWidget::previewRect() const return d->previewRect; } +KSvg::ImageSet *ScreenPreviewWidget::svgImageSet() const +{ + return d->svgImageSet.get(); +} + void ScreenPreviewWidget::resizeEvent(QResizeEvent *e) { d->updateScreenGraphics(); diff --git a/src/kcms/screenedges/screenpreviewwidget.h b/src/kcms/screenedges/screenpreviewwidget.h index baa7b076c1..35fd3f1ba1 100644 --- a/src/kcms/screenedges/screenpreviewwidget.h +++ b/src/kcms/screenedges/screenpreviewwidget.h @@ -7,6 +7,11 @@ #include +namespace KSvg +{ +class ImageSet; +} + class ScreenPreviewWidgetPrivate; class ScreenPreviewWidget : public QWidget @@ -23,6 +28,7 @@ public: qreal ratio() const; QRect previewRect() const; + KSvg::ImageSet *svgImageSet() const; protected: void resizeEvent(QResizeEvent *event) override;