* loading and saving of applets; allows one to define which config file,
which keeps us on the path to being able to snapshot and share layouts * extend addApplet with optional params for applet id and starting geometry svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=696631
This commit is contained in:
parent
d10dba893e
commit
b41bd5f532
42
corona.cpp
42
corona.cpp
@ -71,10 +71,11 @@ public:
|
||||
QString mimetype;
|
||||
};
|
||||
|
||||
Corona::Corona(QObject * parent)
|
||||
Corona::Corona(QObject *parent)
|
||||
: QGraphicsScene(parent),
|
||||
d(new Private)
|
||||
{
|
||||
loadApplets("plasma-appletsrc");
|
||||
//setViewport(new QGLWidget(QGLFormat(QGL::StencilBuffer | QGL::AlphaChannel)));
|
||||
}
|
||||
|
||||
@ -82,6 +83,7 @@ Corona::Corona(const QRectF & sceneRect, QObject * parent )
|
||||
: QGraphicsScene(sceneRect, parent),
|
||||
d(new Private)
|
||||
{
|
||||
loadApplets("plasma-appletsrc");
|
||||
//setViewport(new QGLWidget(QGLFormat(QGL::StencilBuffer | QGL::AlphaChannel)));
|
||||
}
|
||||
|
||||
@ -89,6 +91,7 @@ Corona::Corona(qreal x, qreal y, qreal width, qreal height, QObject * parent)
|
||||
: QGraphicsScene(x, y, width, height, parent),
|
||||
d(new Private)
|
||||
{
|
||||
loadApplets("plasma-appletsrc");
|
||||
//setViewport(new QGLWidget(QGLFormat(QGL::StencilBuffer | QGL::AlphaChannel)));
|
||||
}
|
||||
|
||||
@ -169,9 +172,38 @@ QString Corona::appletMimeType()
|
||||
return d->mimetype;
|
||||
}
|
||||
|
||||
Applet* Corona::addApplet(const QString& name, const QStringList& args)
|
||||
void Corona::saveApplets(const QString &config) const
|
||||
{
|
||||
Applet* applet = Applet::loadApplet(name, 0, args);
|
||||
KConfig appletConfig(config);
|
||||
foreach (Applet *applet, d->applets) {
|
||||
KConfigGroup cg(&appletConfig, QString::number(applet->id()));
|
||||
kDebug() << "saving applet " << applet->name();
|
||||
cg.writeEntry("plugin", applet->pluginName());
|
||||
cg.writeEntry("geometry", QRect(applet->pos().toPoint(), applet->boundingRect().size().toSize()));
|
||||
}
|
||||
}
|
||||
|
||||
void Corona::saveApplets() const
|
||||
{
|
||||
saveApplets("plasma-appletsrc");
|
||||
}
|
||||
|
||||
void Corona::loadApplets(const QString& config)
|
||||
{
|
||||
qDeleteAll(d->applets);
|
||||
d->applets.clear();
|
||||
|
||||
KConfig appletConfig(config, KConfig::OnlyLocal);
|
||||
foreach (const QString& group, appletConfig.groupList()) {
|
||||
KConfigGroup cg(&appletConfig, group);
|
||||
addApplet(cg.readEntry("plugin", QString()), QStringList(),
|
||||
group.toUInt(), cg.readEntry("geometry", QRectF()));
|
||||
}
|
||||
}
|
||||
|
||||
Applet* Corona::addApplet(const QString& name, const QStringList& args, uint id, const QRectF& geometry)
|
||||
{
|
||||
Applet* applet = Applet::loadApplet(name, id, args);
|
||||
if (!applet) {
|
||||
kDebug() << "Applet " << name << " could not be loaded.";
|
||||
applet = new Applet;
|
||||
@ -180,9 +212,13 @@ Applet* Corona::addApplet(const QString& name, const QStringList& args)
|
||||
|
||||
qreal appWidth = applet->boundingRect().width();
|
||||
qreal appHeight = applet->boundingRect().height();
|
||||
if (geometry.isValid()) {
|
||||
applet->setGeometry(geometry);
|
||||
} else {
|
||||
//TODO: Make sure new applets don't overlap with existing ones
|
||||
// Center exactly:
|
||||
applet->setPos((width() / 2) - (appWidth / 2),(height() / 2) - (appHeight / 2));
|
||||
}
|
||||
addItem(applet);
|
||||
applet->updateConstraints();
|
||||
|
||||
|
33
corona.h
33
corona.h
@ -68,15 +68,34 @@ public:
|
||||
/**
|
||||
* Sets the mimetype of Drag/Drop items. Default is
|
||||
* text/x-plasmoidservicename
|
||||
**/
|
||||
void setAppletMimeType(const QString& mimetype);
|
||||
*/
|
||||
void setAppletMimeType(const QString &mimetype);
|
||||
|
||||
/**
|
||||
* The current mime type of Drag/Drop items.
|
||||
**/
|
||||
*/
|
||||
QString appletMimeType();
|
||||
|
||||
/**
|
||||
* Save applets to a config file
|
||||
*
|
||||
* @param config the name of the config file to save to
|
||||
*/
|
||||
void saveApplets(const QString &config) const;
|
||||
|
||||
/**
|
||||
* Load applet layout from a config file
|
||||
*
|
||||
* @param config the name of the config file to load from
|
||||
*/
|
||||
void loadApplets(const QString &config);
|
||||
|
||||
public Q_SLOTS:
|
||||
/**
|
||||
* Save applets to the default config file
|
||||
*/
|
||||
void saveApplets() const;
|
||||
|
||||
/**
|
||||
* Informs the Corona as to what position it is in. This is informational
|
||||
* only, as the Corona doesn't change it's actual location. This is,
|
||||
@ -99,8 +118,14 @@ public Q_SLOTS:
|
||||
* @param name the plugin name for the applet, as given by
|
||||
* KPluginInfo::pluginName()
|
||||
* @param args argument list to pass to the plasmoid
|
||||
* @param id to assign to this applet, or 0 to auto-assign it a new id
|
||||
* @param geometry where to place the applet, or to auto-place it if an invalid
|
||||
* is provided
|
||||
*
|
||||
* @return a pointer to the applet on success, or 0 on failure
|
||||
*/
|
||||
Applet* addApplet(const QString& name, const QStringList& args = QStringList());
|
||||
Applet* addApplet(const QString& name, const QStringList& args = QStringList(),
|
||||
uint id = 0, const QRectF &geometry = QRectF());
|
||||
|
||||
/**
|
||||
* Adds a SuperKaramba theme to the scene
|
||||
|
Loading…
Reference in New Issue
Block a user