[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/plasma/applets/system-monitor
From: Petri Damstén <petri.damsten () kdemail ! net>
Date: 2009-09-09 12:09:11
Message-ID: 1252498151.205678.31157.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1021503 by pdamsten:
Parse temperatures correctly
BUG:200876
M +22 -19 temperature.cpp
M +6 -2 temperature.h
--- trunk/KDE/kdebase/workspace/plasma/applets/system-monitor/temperature.cpp #1021502:1021503
@@ -33,12 +33,16 @@
using namespace KUnitConversion;
Temperature::Temperature(QObject *parent, const QVariantList &args)
- : SM::Applet(parent, args), m_tempModel(0)
+ : SM::Applet(parent, args)
+ , m_tempModel(0)
+ , m_rx(".*temp.*", Qt::CaseInsensitive)
{
setHasConfigurationInterface(true);
resize(215 + 20 + 23, 109 + 20 + 25);
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()), this, SLOT(themeChanged()));
+ m_sourceTimer.setSingleShot(true);
+ connect(&m_sourceTimer, SIGNAL(timeout()), this, SLOT(sourcesAdded()));
}
Temperature::~Temperature()
@@ -53,28 +57,29 @@
setInterval(cg.readEntry("interval", 2) * 1000);
setTitle(i18n("Temperature"));
- if (engine()->sources().count() == 0) {
- connect(engine(), SIGNAL(sourceAdded(QString)), this, SLOT(initLater(const QString)));
- } else {
- parseSources();
+ /* At the time this method is running, not all source may be connected. */
+ connect(engine(), SIGNAL(sourceAdded(QString)), this, SLOT(sourceAdded(const QString)));
+ foreach (const QString& source, engine()->sources()) {
+ sourceAdded(source);
}
}
-void Temperature::parseSources()
+void Temperature::sourceAdded(const QString& name)
{
- KConfigGroup cg = config();
- QStringList temperatures = engine()->sources()
- .filter(QRegExp(".*temp.*", Qt::CaseInsensitive)).mid(0, 5);
- setItems(cg.readEntry("temps", temperatures));
- connectToEngine();
+ if (m_rx.indexIn(name) != -1) {
+ //kDebug() << m_rx.cap(1);
+ m_sources << name;
+ if (!m_sourceTimer.isActive()) {
+ m_sourceTimer.start(0);
+ }
+ }
}
-void Temperature::initLater(const QString &name)
+void Temperature::sourcesAdded()
{
- // How we know all (cpu) sources are ready???
- if (name == "system/uptime") {
- QTimer::singleShot(0, this, SLOT(parseSources()));
- }
+ KConfigGroup cg = config();
+ setItems(cg.readEntry("temps", m_sources.mid(0, 5)));
+ connectToEngine();
}
void Temperature::createConfigurationInterface(KConfigDialog *parent)
@@ -84,11 +89,9 @@
m_tempModel.clear();
m_tempModel.setHorizontalHeaderLabels(QStringList() << i18n("Sensor")
<< i18n("Name"));
- Plasma::DataEngine *engine = dataEngine("systemmonitor");
- QStringList temps = engine->sources().filter(QRegExp(".*temp.*", Qt::CaseInsensitive));
QStandardItem *parentItem = m_tempModel.invisibleRootItem();
- foreach (const QString& temp, temps) {
+ foreach (const QString& temp, m_sources) {
QStandardItem *item1 = new QStandardItem(temp);
item1->setEditable(false);
item1->setCheckable(true);
--- trunk/KDE/kdebase/workspace/plasma/applets/system-monitor/temperature.h #1021502:1021503
@@ -23,6 +23,7 @@
#include "ui_temperature-config.h"
#include <Plasma/DataEngine>
#include <QStandardItemModel>
+#include <QTimer>
namespace Plasma {
class Meter;
@@ -38,19 +39,22 @@
virtual void init();
public slots:
- void initLater(const QString &name);
void dataUpdated(const QString &name, const Plasma::DataEngine::Data &data);
void createConfigurationInterface(KConfigDialog *parent);
private slots:
void configAccepted();
- void parseSources();
+ void sourceAdded(const QString& name);
+ void sourcesAdded();
void themeChanged();
private:
Ui::config ui;
QStandardItemModel m_tempModel;
QHash<QString, QString> m_html;
+ QStringList m_sources;
+ QTimer m_sourceTimer;
+ QRegExp m_rx;
QString temperatureTitle(const QString& source);
bool addMeter(const QString& source);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic