From d13f1ac781110f1eabe5774a215a69162887b7b5 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Tue, 2 Apr 2024 14:01:17 +0300 Subject: [PATCH] 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 --- plasma/applets/mixer/mixer.cpp | 39 ++++++--- plasma/applets/mixer/mixer.h | 1 + .../applets/system-monitor/system-monitor.cpp | 87 ++++++++++++++----- .../applets/system-monitor/system-monitor.h | 1 + 4 files changed, 93 insertions(+), 35 deletions(-) diff --git a/plasma/applets/mixer/mixer.cpp b/plasma/applets/mixer/mixer.cpp index 2bbe99bd..c8a89df7 100644 --- a/plasma/applets/mixer/mixer.cpp +++ b/plasma/applets/mixer/mixer.cpp @@ -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" diff --git a/plasma/applets/mixer/mixer.h b/plasma/applets/mixer/mixer.h index c8121f6c..a708d8b1 100644 --- a/plasma/applets/mixer/mixer.h +++ b/plasma/applets/mixer/mixer.h @@ -45,6 +45,7 @@ public: private Q_SLOTS: void slotConfigAccepted(); + void slotThemeChanged(); private: friend MixerWidget; diff --git a/plasma/applets/system-monitor/system-monitor.cpp b/plasma/applets/system-monitor/system-monitor.cpp index 78875f93..bbffff3e 100644 --- a/plasma/applets/system-monitor/system-monitor.cpp +++ b/plasma/applets/system-monitor/system-monitor.cpp @@ -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" diff --git a/plasma/applets/system-monitor/system-monitor.h b/plasma/applets/system-monitor/system-monitor.h index 302f801f..e04e4e3b 100644 --- a/plasma/applets/system-monitor/system-monitor.h +++ b/plasma/applets/system-monitor/system-monitor.h @@ -46,6 +46,7 @@ public: private Q_SLOTS: void slotConfigAccepted(); + void slotThemeChanged(); private: friend SystemMonitorWidget;