add DataEngine::setModel
This commit is contained in:
parent
f692b5aa74
commit
dea7942533
@ -64,13 +64,12 @@ bool SourcesOnRequestEngine::sourceRequestEvent(const QString &source)
|
|||||||
// expects. So ALWAYS key the new data by the source string as below:
|
// expects. So ALWAYS key the new data by the source string as below:
|
||||||
setData(source, "Update Count", 0);
|
setData(source, "Update Count", 0);
|
||||||
|
|
||||||
Plasma::DataContainer *s = containerForSource(source);
|
if (!model(source)) {
|
||||||
if (!s->model()) {
|
|
||||||
QStandardItemModel *m = new QStandardItemModel;
|
QStandardItemModel *m = new QStandardItemModel;
|
||||||
m->appendRow(new QStandardItem("Item1, first update"));
|
m->appendRow(new QStandardItem("Item1, first update"));
|
||||||
m->appendRow(new QStandardItem("Item2, first update"));
|
m->appendRow(new QStandardItem("Item2, first update"));
|
||||||
m->appendRow(new QStandardItem("Item3, first update"));
|
m->appendRow(new QStandardItem("Item3, first update"));
|
||||||
s->setModel(m);
|
setModel(source, m);
|
||||||
}
|
}
|
||||||
|
|
||||||
// as we successfully set up the source, return true
|
// as we successfully set up the source, return true
|
||||||
@ -96,9 +95,8 @@ bool SourcesOnRequestEngine::updateSourceEvent(const QString &source)
|
|||||||
const int updateCount = containerForSource(source)->data().value("Update Count").toInt() + 1;
|
const int updateCount = containerForSource(source)->data().value("Update Count").toInt() + 1;
|
||||||
setData(source, "Update Count", updateCount);
|
setData(source, "Update Count", updateCount);
|
||||||
|
|
||||||
Plasma::DataContainer *s = containerForSource(source);
|
QStandardItemModel *m = qobject_cast<QStandardItemModel *>(model(source));
|
||||||
QStandardItemModel *m = qobject_cast<QStandardItemModel *>(s->model());
|
if (m) {
|
||||||
if (s->model()) {
|
|
||||||
m->clear();
|
m->clear();
|
||||||
m->appendRow(new QStandardItem(QString("Item1, update %1").arg(updateCount)));
|
m->appendRow(new QStandardItem(QString("Item1, update %1").arg(updateCount)));
|
||||||
m->appendRow(new QStandardItem(QString("Item2, update %1").arg(updateCount)));
|
m->appendRow(new QStandardItem(QString("Item2, update %1").arg(updateCount)));
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "private/dataengine_p.h"
|
#include "private/dataengine_p.h"
|
||||||
#include "private/datacontainer_p.h"
|
#include "private/datacontainer_p.h"
|
||||||
|
|
||||||
|
#include <QAbstractItemModel>
|
||||||
#include <QQueue>
|
#include <QQueue>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
@ -227,6 +228,32 @@ void DataEngine::removeData(const QString &source, const QString &key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DataEngine::setModel(const QString &source, QAbstractItemModel *model)
|
||||||
|
{
|
||||||
|
if (model) {
|
||||||
|
setData(source, "HasModel", true);
|
||||||
|
} else {
|
||||||
|
removeData(source, "HasModel");
|
||||||
|
}
|
||||||
|
|
||||||
|
Plasma::DataContainer *s = containerForSource(source);
|
||||||
|
|
||||||
|
if (s) {
|
||||||
|
s->setModel(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QAbstractItemModel *DataEngine::model(const QString &source)
|
||||||
|
{
|
||||||
|
Plasma::DataContainer *s = containerForSource(source);
|
||||||
|
|
||||||
|
if (s) {
|
||||||
|
return s->model();
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DataEngine::addSource(DataContainer *source)
|
void DataEngine::addSource(DataContainer *source)
|
||||||
{
|
{
|
||||||
if (d->sources.contains(source->objectName())) {
|
if (d->sources.contains(source->objectName())) {
|
||||||
|
@ -31,6 +31,8 @@
|
|||||||
#include <plasma/plasma.h>
|
#include <plasma/plasma.h>
|
||||||
#include <plasma/service.h>
|
#include <plasma/service.h>
|
||||||
|
|
||||||
|
class QAbstractItemModel;
|
||||||
|
|
||||||
namespace Plasma
|
namespace Plasma
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -306,6 +308,27 @@ Types::NoAlignment) const;
|
|||||||
**/
|
**/
|
||||||
void removeData(const QString &source, const QString &key);
|
void removeData(const QString &source, const QString &key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Associates a model to a data source. If the source
|
||||||
|
* doesn't exist then it is created. The source will have the key "HasModel" to easily indicate there is a model present.
|
||||||
|
*
|
||||||
|
* The ownership of the model is transferred to the DataContainer,
|
||||||
|
* so the model will be deletd when a new one is set or when the
|
||||||
|
* DataContainer itself is deleted. As the DataContainer, it will be
|
||||||
|
* deleted when there won't be any
|
||||||
|
* visualization associated to this source.
|
||||||
|
*
|
||||||
|
* @param source the name of the data source
|
||||||
|
* @param model the model instance
|
||||||
|
*/
|
||||||
|
void setModel(const QString &source, QAbstractItemModel *model);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The model associated to a source if any. The ownership of the model stays with the DataContainer.
|
||||||
|
* Returns 0 if there isn't any model associated or if the source doesn't exists.
|
||||||
|
*/
|
||||||
|
QAbstractItemModel *model(const QString &source);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds an already constructed data source. The DataEngine takes
|
* Adds an already constructed data source. The DataEngine takes
|
||||||
* ownership of the DataContainer object. The objectName of the source
|
* ownership of the DataContainer object. The objectName of the source
|
||||||
|
Loading…
Reference in New Issue
Block a user