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.
This commit is contained in:
Kai Uwe Broulik 2023-08-20 16:41:37 +02:00 committed by Vlad Zahorodnii
parent adf8ed8f34
commit 23059285cf
5 changed files with 28 additions and 9 deletions

View file

@ -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})

View file

@ -11,7 +11,7 @@
#include "monitor.h"
#include <KLocalizedString>
#include <Plasma/FrameSvg>
#include <KSvg/FrameSvg>
#include <QApplication>
#include <QDebug>
@ -211,8 +211,9 @@ void Monitor::flip(Corner *c, QPoint pos)
Monitor::Corner::Corner(Monitor *m)
: m_monitor(m)
, m_button(std::make_unique<Plasma::FrameSvg>())
, m_button(std::make_unique<KSvg::FrameSvg>())
{
m_button->setImageSet(m->svgImageSet());
m_button->setImagePath("widgets/button");
setAcceptHoverEvents(true);
}

View file

@ -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<Plasma::FrameSvg> m_button;
const std::unique_ptr<KSvg::FrameSvg> m_button;
bool m_active = false;
bool m_hover = false;
};

View file

@ -13,9 +13,12 @@
#include <QDebug>
#include <QMimeData>
#include <Plasma/FrameSvg>
#include <KSvg/FrameSvg>
#include <KSvg/ImageSet>
#include <kurlmimedata.h>
#include <memory>
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<KSvg::ImageSet> svgImageSet;
KSvg::FrameSvg *screenGraphics;
QPixmap preview;
QRect monitorRect;
qreal ratio;
@ -67,7 +71,10 @@ ScreenPreviewWidget::ScreenPreviewWidget(QWidget *parent)
: QWidget(parent)
, d(std::make_unique<ScreenPreviewWidgetPrivate>(this))
{
d->screenGraphics = new Plasma::FrameSvg(this);
d->svgImageSet = std::make_unique<KSvg::ImageSet>();
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();

View file

@ -7,6 +7,11 @@
#include <QWidget>
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;