plasma: handle theme change in system-monitor and mixer applets

also not saving the colors to the config when the colors are the default
colors

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-04-02 14:01:17 +03:00
parent 07a0119d45
commit d13f1ac781
4 changed files with 93 additions and 35 deletions

View file

@ -960,7 +960,6 @@ MixerApplet::MixerApplet(QObject *parent, const QVariantList &args)
m_mixerwidget(nullptr),
m_showvisualizer(s_showvisualizer),
m_visualizerscale(s_visualizerscale),
m_visualizercolor(kDefaultVisualizerColor()),
m_visualizericon(s_visualizericon),
m_visualizerbox(nullptr),
m_visualizerscalebox(nullptr),
@ -981,13 +980,8 @@ MixerApplet::~MixerApplet()
void MixerApplet::init()
{
KConfigGroup configgroup = config();
m_showvisualizer = configgroup.readEntry("showVisualizer", s_showvisualizer);
m_visualizerscale = configgroup.readEntry("visualizerScale", s_visualizerscale);
m_visualizercolor = configgroup.readEntry("visualizerColor", kDefaultVisualizerColor());
m_visualizericon = configgroup.readEntry("visualizerIcon", s_visualizericon);
m_mixerwidget->showVisualizer(m_showvisualizer, m_visualizerscale, m_visualizercolor, m_visualizericon);
slotThemeChanged();
connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()), this, SLOT(slotThemeChanged()));
}
void MixerApplet::createConfigurationInterface(KConfigDialog *parent)
@ -1005,9 +999,14 @@ void MixerApplet::createConfigurationInterface(KConfigDialog *parent)
m_visualizerscalebox->setLabel(i18n("Smooth-factor"));
widgetlayout->addWidget(m_visualizerscalebox);
const QColor defaultvisualizercolor = kDefaultVisualizerColor();
QColor visualizercolor = m_visualizercolor;
if (!visualizercolor.isValid()) {
visualizercolor = defaultvisualizercolor;
}
m_visualizerbutton = new KColorButton(widget);
m_visualizerbutton->setDefaultColor(kDefaultVisualizerColor());
m_visualizerbutton->setColor(m_visualizercolor);
m_visualizerbutton->setDefaultColor(defaultvisualizercolor);
m_visualizerbutton->setColor(visualizercolor);
widgetlayout->addWidget(m_visualizerbutton);
m_visualizericonbox = new QCheckBox(widget);
@ -1054,12 +1053,30 @@ void MixerApplet::slotConfigAccepted()
KConfigGroup configgroup = config();
configgroup.writeEntry("showVisualizer", m_showvisualizer);
configgroup.writeEntry("visualizerScale", m_visualizerscale);
configgroup.writeEntry("visualizerColor", m_visualizercolor);
if (m_visualizercolor == kDefaultVisualizerColor()) {
configgroup.writeEntry("visualizerColor", QColor());
} else {
configgroup.writeEntry("visualizerColor", m_visualizercolor);
}
configgroup.writeEntry("visualizerIcon", m_visualizericon);
emit configNeedsSaving();
m_mixerwidget->showVisualizer(m_showvisualizer, m_visualizerscale, m_visualizercolor, m_visualizericon);
}
void MixerApplet::slotThemeChanged()
{
KConfigGroup configgroup = config();
m_showvisualizer = configgroup.readEntry("showVisualizer", s_showvisualizer);
m_visualizerscale = configgroup.readEntry("visualizerScale", s_visualizerscale);
m_visualizercolor = configgroup.readEntry("visualizerColor", QColor());
if (!m_visualizercolor.isValid()) {
m_visualizercolor = kDefaultVisualizerColor();
}
m_visualizericon = configgroup.readEntry("visualizerIcon", s_visualizericon);
m_mixerwidget->showVisualizer(m_showvisualizer, m_visualizerscale, m_visualizercolor, m_visualizericon);
}
K_EXPORT_PLASMA_APPLET(mixer, MixerApplet)
#include "moc_mixer.cpp"

View file

@ -45,6 +45,7 @@ public:
private Q_SLOTS:
void slotConfigAccepted();
void slotThemeChanged();
private:
friend MixerWidget;

View file

@ -777,9 +777,6 @@ SystemMonitor::SystemMonitor(QObject *parent, const QVariantList &args)
m_hostname(s_hostname),
m_port(s_port),
m_update(s_update),
m_cpucolor(kCPUVisualizerColor()),
m_receivercolor(kNetReceiverVisualizerColor()),
m_transmittercolor(kNetTransmitterVisualizerColor()),
m_temperatureunit(s_temperatureunit),
m_hostnameedit(nullptr),
m_portbox(nullptr),
@ -803,18 +800,8 @@ SystemMonitor::~SystemMonitor()
void SystemMonitor::init()
{
KConfigGroup configgroup = config();
m_hostname = configgroup.readEntry("hostname", s_hostname);
m_port = configgroup.readEntry("port", s_port);
m_update = configgroup.readEntry("update", s_update);
m_cpucolor = configgroup.readEntry("cpucolor", kCPUVisualizerColor());
m_receivercolor = configgroup.readEntry("netreceivercolor", kNetReceiverVisualizerColor());
m_transmittercolor = configgroup.readEntry("nettransmittercolor", kNetTransmitterVisualizerColor());
m_temperatureunit = configgroup.readEntry("temperatureunit", s_temperatureunit);
m_systemmonitorwidget->setupMonitors(
m_hostname, m_port, m_update,
m_cpucolor, m_receivercolor, m_transmittercolor, m_temperatureunit
);
slotThemeChanged();
connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()), this, SLOT(slotThemeChanged()));
}
void SystemMonitor::createConfigurationInterface(KConfigDialog *parent)
@ -838,19 +825,34 @@ void SystemMonitor::createConfigurationInterface(KConfigDialog *parent)
m_updateedit->setTime(QTime(0, 0, 0).addSecs(m_update));
widgetlayout->addWidget(m_updateedit);
const QColor defaultcpucolor = kCPUVisualizerColor();
QColor cpucolor = m_cpucolor;
if (!cpucolor.isValid()) {
cpucolor = defaultcpucolor;
}
m_cpubutton = new KColorButton(widget);
m_cpubutton->setDefaultColor(kCPUVisualizerColor());
m_cpubutton->setColor(m_cpucolor);
m_cpubutton->setDefaultColor(defaultcpucolor);
m_cpubutton->setColor(cpucolor);
widgetlayout->addWidget(m_cpubutton);
const QColor defaultreceivercolor = kNetReceiverVisualizerColor();
QColor receivercolor = m_receivercolor;
if (!receivercolor.isValid()) {
receivercolor = defaultreceivercolor;
}
m_receiverbutton = new KColorButton(widget);
m_receiverbutton->setDefaultColor(kNetReceiverVisualizerColor());
m_receiverbutton->setColor(m_receivercolor);
m_receiverbutton->setDefaultColor(defaultreceivercolor);
m_receiverbutton->setColor(receivercolor);
widgetlayout->addWidget(m_receiverbutton);
const QColor defaulttransmittercolor = kNetTransmitterVisualizerColor();
QColor transmittercolor = m_transmittercolor;
if (!transmittercolor.isValid()) {
transmittercolor = defaulttransmittercolor;
}
m_transmitterbutton = new KColorButton(widget);
m_transmitterbutton->setDefaultColor(kNetTransmitterVisualizerColor());
m_transmitterbutton->setColor(m_transmittercolor);
m_transmitterbutton->setDefaultColor(defaulttransmittercolor);
m_transmitterbutton->setColor(transmittercolor);
widgetlayout->addWidget(m_transmitterbutton);
m_temperaturebox = new QComboBox(widget);
@ -900,9 +902,21 @@ void SystemMonitor::slotConfigAccepted()
configgroup.writeEntry("hostname", m_hostname);
configgroup.writeEntry("port", m_port);
configgroup.writeEntry("update", m_update);
configgroup.writeEntry("cpucolor", m_cpucolor);
configgroup.writeEntry("netreceivercolor", m_receivercolor);
configgroup.writeEntry("nettransmittercolor", m_transmittercolor);
if (m_cpucolor == kCPUVisualizerColor()) {
configgroup.writeEntry("cpucolor", QColor());
} else {
configgroup.writeEntry("cpucolor", m_cpucolor);
}
if (m_receivercolor == kNetReceiverVisualizerColor()) {
configgroup.writeEntry("netreceivercolor", QColor());
} else {
configgroup.writeEntry("netreceivercolor", m_receivercolor);
}
if (m_transmittercolor == kNetTransmitterVisualizerColor()) {
configgroup.writeEntry("nettransmittercolor", QColor());
} else {
configgroup.writeEntry("nettransmittercolor", m_transmittercolor);
}
configgroup.writeEntry("temperatureunit", m_temperatureunit);
emit configNeedsSaving();
m_systemmonitorwidget->setupMonitors(
@ -911,6 +925,31 @@ void SystemMonitor::slotConfigAccepted()
);
}
void SystemMonitor::slotThemeChanged()
{
KConfigGroup configgroup = config();
m_hostname = configgroup.readEntry("hostname", s_hostname);
m_port = configgroup.readEntry("port", s_port);
m_update = configgroup.readEntry("update", s_update);
m_cpucolor = configgroup.readEntry("cpucolor", QColor());
if (!m_cpucolor.isValid()) {
m_cpucolor = kCPUVisualizerColor();
}
m_receivercolor = configgroup.readEntry("netreceivercolor", QColor());
if (!m_receivercolor.isValid()) {
m_receivercolor = kNetReceiverVisualizerColor();
}
m_transmittercolor = configgroup.readEntry("nettransmittercolor", QColor());
if (!m_transmittercolor.isValid()) {
m_transmittercolor = kNetTransmitterVisualizerColor();
}
m_temperatureunit = configgroup.readEntry("temperatureunit", s_temperatureunit);
m_systemmonitorwidget->setupMonitors(
m_hostname, m_port, m_update,
m_cpucolor, m_receivercolor, m_transmittercolor, m_temperatureunit
);
}
K_EXPORT_PLASMA_APPLET(system-monitor_applet, SystemMonitor)
#include "moc_system-monitor.cpp"

View file

@ -46,6 +46,7 @@ public:
private Q_SLOTS:
void slotConfigAccepted();
void slotThemeChanged();
private:
friend SystemMonitorWidget;