- add a way to get at the Containment

- fix some apidox
- add a method for state saving, but for the main applet class info as well as subclasses (plasmoids, e.g.)

svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=714174
This commit is contained in:
Aaron J. Seigo 2007-09-18 21:22:45 +00:00
parent 2b2b7f02e5
commit 2c63daad12
2 changed files with 63 additions and 24 deletions

View File

@ -43,6 +43,7 @@
#include <KIconLoader> #include <KIconLoader>
#include "plasma/configxml.h" #include "plasma/configxml.h"
#include "plasma/containment.h"
#include "plasma/corona.h" #include "plasma/corona.h"
#include "plasma/dataenginemanager.h" #include "plasma/dataenginemanager.h"
#include "plasma/package.h" #include "plasma/package.h"
@ -106,10 +107,6 @@ public:
void init(Applet* applet) void init(Applet* applet)
{ {
applet->setZValue(100); applet->setZValue(100);
//these lines fix behaviour somewhat with update()s after resize in qt 4.3.0,
//but the issues are fixed in 4.3.1 and this breaks shadows.
//applet->setFlag(QGraphicsItem::ItemClipsToShape, false);
//applet->setFlag(QGraphicsItem::ItemClipsChildrenToShape, false);
kioskImmutable = applet->globalConfig().isImmutable() || kioskImmutable = applet->globalConfig().isImmutable() ||
applet->config().isImmutable(); applet->config().isImmutable();
applet->setImmutable(kioskImmutable); applet->setImmutable(kioskImmutable);
@ -197,7 +194,9 @@ public:
const int bottomOffset = contentHeight; const int bottomOffset = contentHeight;
const int contentTop = 0; const int contentTop = 0;
const int contentLeft = 0; const int contentLeft = 0;
if (!cachedBackground || cachedBackground->size() != QSize(leftWidth + contentWidth + rightWidth, topHeight + contentHeight + bottomHeight)) { QSize s = QSize(leftWidth + contentWidth + rightWidth,
topHeight + contentHeight + bottomHeight);
if (!cachedBackground || cachedBackground->size() != s) {
delete cachedBackground; delete cachedBackground;
cachedBackground = new QPixmap(leftWidth + contentWidth + rightWidth, topHeight + contentHeight + bottomHeight); cachedBackground = new QPixmap(leftWidth + contentWidth + rightWidth, topHeight + contentHeight + bottomHeight);
cachedBackground->fill(Qt::transparent); cachedBackground->fill(Qt::transparent);
@ -217,7 +216,6 @@ public:
background->paint(&p, QRect(contentLeft, topOffset, contentWidth, topHeight), "top"); background->paint(&p, QRect(contentLeft, topOffset, contentWidth, topHeight), "top");
background->paint(&p, QRect(contentLeft, bottomOffset, contentWidth, bottomHeight), "bottom"); background->paint(&p, QRect(contentLeft, bottomOffset, contentWidth, bottomHeight), "bottom");
} else { } else {
QPixmap left(leftWidth, leftHeight); QPixmap left(leftWidth, leftHeight);
left.fill(Qt::transparent); left.fill(Qt::transparent);
{ {
@ -391,6 +389,24 @@ KConfigGroup Applet::config() const
return KConfigGroup(d->config(), "General"); return KConfigGroup(d->config(), "General");
} }
void Applet::save(KConfigGroup* group) const
{
group->writeEntry("plugin", pluginName());
group->writeEntry("geometry", QRect(pos().toPoint(), boundingRect().size().toSize()));
Containment* c = containment();
if (c) {
group->writeEntry("containment", c->id());
}
saveState(group);
}
void Applet::saveState(KConfigGroup* group) const
{
Q_UNUSED(group)
}
KConfigGroup Applet::config(const QString& group) const KConfigGroup Applet::config(const QString& group) const
{ {
KConfigGroup cg = config(); KConfigGroup cg = config();
@ -749,20 +765,29 @@ void Applet::paintInterface(QPainter *painter, const QStyleOptionGraphicsItem *o
FormFactor Applet::formFactor() const FormFactor Applet::formFactor() const
{ {
if (!scene()) { Containment* c = containment();
if (!c) {
return Plasma::Planar; return Plasma::Planar;
} }
return static_cast<Corona*>(scene())->formFactor(); return c->formFactor();
}
Containment* Applet::containment() const
{
return dynamic_cast<Containment*>(parentItem());
} }
Location Applet::location() const Location Applet::location() const
{ {
if (!scene()) { Containment* c = containment();
if (!c) {
return Plasma::Desktop; return Plasma::Desktop;
} }
return static_cast<Corona*>(scene())->location(); return c->location();
} }
QSizeF Applet::contentSize() const QSizeF Applet::contentSize() const

View File

@ -35,6 +35,7 @@
namespace Plasma namespace Plasma
{ {
class Containment;
class DataEngine; class DataEngine;
class Package; class Package;
@ -127,6 +128,11 @@ class PLASMA_EXPORT Applet : public Widget
**/ **/
KConfigGroup config(const QString& group) const; KConfigGroup config(const QString& group) const;
/**
* Saves state information about this applet.
**/
void save(KConfigGroup* group) const;
/** /**
* Returns a KConfigGroup object to be shared by all applets of this * Returns a KConfigGroup object to be shared by all applets of this
* type. * type.
@ -196,14 +202,14 @@ class PLASMA_EXPORT Applet : public Widget
* *
* @see Plasma::FormFactor * @see Plasma::FormFactor
*/ */
FormFactor formFactor() const; virtual FormFactor formFactor() const;
/** /**
* Returns the location of the scene which is displaying applet. * Returns the location of the scene which is displaying applet.
* *
* @see Plasma::Location * @see Plasma::Location
*/ */
Location location() const; virtual Location location() const;
/** /**
* Returns the area within which contents can be painted. If there is no * Returns the area within which contents can be painted. If there is no
@ -225,8 +231,7 @@ class PLASMA_EXPORT Applet : public Widget
virtual QSizeF contentSizeHint() const; virtual QSizeF contentSizeHint() const;
/** /**
* Returns a list of all known applets in a hash keyed by a unique * Returns a list of all known applets.
* identifier for each applet.
* *
* @param category Only applets matchin this category will be returned. * @param category Only applets matchin this category will be returned.
* Useful in conjunction with knownCategories. * Useful in conjunction with knownCategories.
@ -245,8 +250,7 @@ class PLASMA_EXPORT Applet : public Widget
const QString &parentApp = QString()); const QString &parentApp = QString());
/** /**
* Returns a list of all known applets associated with a certain mimetype in a hash keyed by a unique * Returns a list of all known applets associated with a certain mimetype.
* identifier for each applet
* *
* @return list of applets * @return list of applets
**/ **/
@ -491,6 +495,12 @@ class PLASMA_EXPORT Applet : public Widget
void destroy(); void destroy();
protected: protected:
/**
* Called when a request to save the state of the applet is made
* during runtime
**/
virtual void saveState(KConfigGroup* config) const;
/** /**
* Returns the name of the applet. * Returns the name of the applet.
* *
@ -548,6 +558,10 @@ class PLASMA_EXPORT Applet : public Widget
*/ */
QVariant itemChange(GraphicsItemChange change, const QVariant &value); QVariant itemChange(GraphicsItemChange change, const QVariant &value);
/**
* @return the Containment, if any, this applet belongs to
**/
Containment* containment() const;
protected Q_SLOTS: protected Q_SLOTS:
/** /**