diff --git a/dataengine.cpp b/dataengine.cpp index 5d82ac18c..475bce69c 100644 --- a/dataengine.cpp +++ b/dataengine.cpp @@ -50,6 +50,7 @@ class DataEngine::Private << ": could not find DataSource " << sourceName << ", creating" << endl; DataSource* s = new DataSource(engine); + emit engine->newDataSource(sourceName); s->setName(sourceName); sources.insert(sourceName, s); return s; @@ -89,19 +90,14 @@ QStringList DataEngine::dataSources() return d->sources.keys(); } -void DataEngine::connectSource(const QString& source, DataVisualization* visualization) +void DataEngine::connectSource(const QString& source, QObject* visualization) { Q_UNUSED(source) Q_UNUSED(visualization) DataSource* s = d->source(source); -// if (!s) { -// kDebug() << "DataEngine " << objectName() << ": could not find DataSource " << source << endl; -// return; -// } - - connect(s, SIGNAL(updated(Plasma::DataEngine::Data)), - visualization, SLOT(updated(Plasma::DataEngine::Data))); + connect(s, SIGNAL(updated(QString,Plasma::DataEngine::Data)), + visualization, SLOT(updated(QString,Plasma::DataEngine::Data))); } DataEngine::Data DataEngine::query(const QString& source) @@ -146,6 +142,7 @@ void DataEngine::removeDataSource(const QString& source) { DataSource::Dict::iterator it = d->sources.find(source); if (it != d->sources.end()) { + emit dataSourceRemoved(it.key()); d->sources.erase(it); } } @@ -155,6 +152,7 @@ void DataEngine::clearAllDataSources() QMutableHashIterator it(d->sources); while (it.hasNext()) { it.next(); + emit dataSourceRemoved(it.key()); delete it.value(); it.remove(); } diff --git a/dataengine.h b/dataengine.h index bfc7aeb8e..2f45f4d9e 100644 --- a/dataengine.h +++ b/dataengine.h @@ -44,13 +44,18 @@ class PLASMA_EXPORT DataEngine : public QObject virtual ~DataEngine(); virtual QStringList dataSources(); - void connectSource(const QString& source, DataVisualization* visualization); + void connectSource(const QString& source, QObject* visualization); Data query(const QString& source); void ref(); void deref(); bool isUsed(); + + Q_SIGNALS: + void newDataSource(const QString& source); + void dataSourceRemoved(const QString& source); + protected: virtual void init(); void setData(const QString& source, const QVariant& value); diff --git a/datasource.cpp b/datasource.cpp index 89837342d..f598ebc7b 100644 --- a/datasource.cpp +++ b/datasource.cpp @@ -33,7 +33,6 @@ class DataSource::Private : dirty(false) {} - QString name; DataEngine::Data data; bool dirty; }; @@ -73,7 +72,7 @@ void DataSource::setData(const QString& key, const QVariant& value) void DataSource::checkForUpdate() { if (d->dirty) { - emit updated(d->data); + emit updated(objectName(), d->data); d->dirty = false; } } diff --git a/datasource.h b/datasource.h index aae8860ba..cb2723ee3 100644 --- a/datasource.h +++ b/datasource.h @@ -47,7 +47,7 @@ class PLASMA_EXPORT DataSource : public QObject void checkForUpdate(); Q_SIGNALS: - void updated(const Plasma::DataEngine::Data&); + void updated(const QString& source, const Plasma::DataEngine::Data& data); private: class Private; diff --git a/datavisualization.h b/datavisualization.h index 74fd803c7..883cccd28 100644 --- a/datavisualization.h +++ b/datavisualization.h @@ -35,7 +35,7 @@ class PLASMA_EXPORT DataVisualization : public QObject virtual ~DataVisualization(); public Q_SLOTS: - virtual void updated(const Plasma::DataEngine::Data&) = 0; + virtual void updated(const QString& source, const Plasma::DataEngine::Data&) = 0; private: class Private; diff --git a/widgets/checkbox.cpp b/widgets/checkbox.cpp index 4f76741ef..09c044098 100644 --- a/widgets/checkbox.cpp +++ b/widgets/checkbox.cpp @@ -112,7 +112,7 @@ void CheckBox::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, } -void CheckBox::updated(const DataEngine::Data&) +void CheckBox::updated(const QString&, const DataEngine::Data&) { } diff --git a/widgets/checkbox.h b/widgets/checkbox.h index e34090840..50ab9e1de 100644 --- a/widgets/checkbox.h +++ b/widgets/checkbox.h @@ -59,7 +59,7 @@ class KDE_EXPORT CheckBox : public DataVisualization,public QGraphicsItem public Q_SLOTS: - void updated(const DataEngine::Data&); + void updated(const QString&, const DataEngine::Data&); Q_SIGNALS: void clicked(); protected: diff --git a/widgets/lineedit.cpp b/widgets/lineedit.cpp index c32251d6d..aeba2c72e 100644 --- a/widgets/lineedit.cpp +++ b/widgets/lineedit.cpp @@ -24,8 +24,7 @@ namespace Plasma { LineEdit::LineEdit(QGraphicsItem *parent, QGraphicsScene *scene) - : QGraphicsTextItem(parent, scene), - DataVisualization() + : QGraphicsTextItem(parent, scene) { setTextInteractionFlags(Qt::TextEditorInteraction); } @@ -53,7 +52,7 @@ void LineEdit::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QGraphicsTextItem::paint(painter, style, widget); } -void LineEdit::updated(const DataEngine::Data& data) +void LineEdit::updated(const QString&, const DataEngine::Data& data) { DataEngine::DataIterator it(data); diff --git a/widgets/lineedit.h b/widgets/lineedit.h index 5bdafcf83..587ddf511 100644 --- a/widgets/lineedit.h +++ b/widgets/lineedit.h @@ -31,8 +31,7 @@ namespace Plasma /** * Class that emulates a QLineEdit inside plasma */ -class KDE_EXPORT LineEdit : public QGraphicsTextItem, - public DataVisualization +class KDE_EXPORT LineEdit : public QGraphicsTextItem { public: explicit LineEdit(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); @@ -41,7 +40,7 @@ class KDE_EXPORT LineEdit : public QGraphicsTextItem, void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); public Q_SLOTS: - void updated(const DataEngine::Data&); + void updated(const QString&, const DataEngine::Data&); }; } // namespace Plasma diff --git a/widgets/pushbutton.cpp b/widgets/pushbutton.cpp index c3a183d89..053dbefb1 100644 --- a/widgets/pushbutton.cpp +++ b/widgets/pushbutton.cpp @@ -82,7 +82,7 @@ PushButton::~PushButton() delete d; } -void PushButton::updated(const DataEngine::Data &data) +void PushButton::updated(const QString&, const DataEngine::Data &data) { Q_UNUSED(data) } diff --git a/widgets/pushbutton.h b/widgets/pushbutton.h index 9d83d51f0..646dc2c17 100644 --- a/widgets/pushbutton.h +++ b/widgets/pushbutton.h @@ -91,7 +91,7 @@ class KDE_EXPORT PushButton : public DataVisualization, void clicked(); public Q_SLOTS: - virtual void updated(const DataEngine::Data &); + virtual void updated(const QString&, const DataEngine::Data &); protected: bool isDown(); diff --git a/widgets/radiobutton.cpp b/widgets/radiobutton.cpp index a5c0510b1..88583bb88 100644 --- a/widgets/radiobutton.cpp +++ b/widgets/radiobutton.cpp @@ -148,7 +148,7 @@ void RadioButton::setText(const QString &text) update(); } -void RadioButton::updated(const Plasma::DataEngine::Data &data) +void RadioButton::updated(const QString&, const Plasma::DataEngine::Data &data) { Q_UNUSED(data); } diff --git a/widgets/radiobutton.h b/widgets/radiobutton.h index e629e27dc..f0c15dc0d 100644 --- a/widgets/radiobutton.h +++ b/widgets/radiobutton.h @@ -73,7 +73,7 @@ public: public Q_SLOTS: // DataVisualization overridden virtual slots - void updated(const Plasma::DataEngine::Data &data); + void updated(const QString&, const Plasma::DataEngine::Data &data); Q_SIGNALS: void clicked();