From 1e77632048d677edc3c4c1e694cc2ecbd3ed7b5b Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Fri, 18 Apr 2008 16:05:20 +0000 Subject: [PATCH] api changes: init() and setFailedToLaunch are now protected containment and corona are friends of applet svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=798585 --- applet.cpp | 112 ++++++++++++++++++++++++------------------------ applet.h | 48 +++++++++++---------- containment.cpp | 8 ++-- 3 files changed, 87 insertions(+), 81 deletions(-) diff --git a/applet.cpp b/applet.cpp index 5da3f53cb..613d2251d 100644 --- a/applet.cpp +++ b/applet.cpp @@ -298,6 +298,19 @@ public: } } + QString visibleFailureText(const QString& reason) + { + QString text; + + if (reason.isEmpty()) { + text = i18n("This object could not be created."); + } else { + text = i18n("This object could not be created for the following reason:

%1

", reason); + } + + return text; + } + //TODO: examine the usage of memory here; there's a pretty large // number of members at this point. static uint s_maxAppletId; @@ -439,6 +452,49 @@ void Applet::restore(KConfigGroup *c) } } +void Applet::setFailedToLaunch(bool failed, const QString& reason) +{ + if (d->failed == failed) { + return; + } + + d->failed = failed; + prepareGeometryChange(); + + qDeleteAll(QGraphicsItem::children()); + setLayout(0); + + if (failed) { + setDrawStandardBackground(true); + + #ifdef TOPORT + Layout* failureLayout = new BoxLayout(BoxLayout::TopToBottom, this); + d->failureText = new LineEdit(this); + d->failureText->setTextInteractionFlags( Qt::TextSelectableByMouse ); + d->failureText->setStyled(false); + d->failureText->document()->setTextWidth(200); + d->failureText->setHtml(visibleFailureText(reason)); + //FIXME: this needs to get the colour from the theme's colour scheme + d->failureText->setDefaultTextColor(KStatefulBrush(KColorScheme::Window, + KColorScheme::NormalText, + Theme::self()->colors()) + .brush(QPalette::Normal).color()); + failureLayout->addItem(d->failureText); + #endif + + + QGraphicsLinearLayout *failureLayout = new QGraphicsLinearLayout(); + failureLayout->setContentsMargins(0, 0, 0, 0); + QGraphicsProxyWidget * failureWidget = new QGraphicsProxyWidget(this); + QLabel * label = new QLabel(d->visibleFailureText(reason)); + label->setWordWrap(true); + failureWidget->setWidget(label); + failureLayout->addItem(failureWidget); + setLayout(failureLayout); + } + update(); +} + void Applet::saveState(KConfigGroup* group) const { if (group->config()->name() != config().config()->name()) { @@ -757,19 +813,6 @@ bool Applet::hasFailedToLaunch() const return d->failed; } -QString visibleFailureText(const QString& reason) -{ - QString text; - - if (reason.isEmpty()) { - text = i18n("This object could not be created."); - } else { - text = i18n("This object could not be created for the following reason:

%1

", reason); - } - - return text; -} - void Applet::paintWindowFrame ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) { //Here come the code for the window frame @@ -777,49 +820,6 @@ void Applet::paintWindowFrame ( QPainter * painter, const QStyleOptionGraphicsIt //painter->drawRoundedRect(windowFrameGeometry(),5,5); } -void Applet::setFailedToLaunch(bool failed, const QString& reason) -{ - if (d->failed == failed) { - return; - } - - d->failed = failed; - prepareGeometryChange(); - - qDeleteAll(QGraphicsItem::children()); - setLayout(0); - - if (failed) { - setDrawStandardBackground(true); - - #ifdef TOPORT - Layout* failureLayout = new BoxLayout(BoxLayout::TopToBottom, this); - d->failureText = new LineEdit(this); - d->failureText->setTextInteractionFlags( Qt::TextSelectableByMouse ); - d->failureText->setStyled(false); - d->failureText->document()->setTextWidth(200); - d->failureText->setHtml(visibleFailureText(reason)); - //FIXME: this needs to get the colour from the theme's colour scheme - d->failureText->setDefaultTextColor(KStatefulBrush(KColorScheme::Window, - KColorScheme::NormalText, - Theme::self()->colors()) - .brush(QPalette::Normal).color()); - failureLayout->addItem(d->failureText); - #endif - - - QGraphicsLinearLayout *failureLayout = new QGraphicsLinearLayout(); - failureLayout->setContentsMargins(0, 0, 0, 0); - QGraphicsProxyWidget * failureWidget = new QGraphicsProxyWidget(this); - QLabel * label = new QLabel(visibleFailureText(reason)); - label->setWordWrap(true); - failureWidget->setWidget(label); - failureLayout->addItem(failureWidget); - setLayout(failureLayout); - } - update(); -} - bool Applet::needsConfiguring() const { return d->needsConfigOverlay != 0; diff --git a/applet.h b/applet.h index 0da51b630..8793a9f62 100644 --- a/applet.h +++ b/applet.h @@ -107,14 +107,6 @@ class PLASMA_EXPORT Applet : public QGraphicsWidget */ static PackageStructure::Ptr packageStructure(); - /** - * This method is called once the applet is loaded and added to a Corona. - * If the applet requires a QGraphicsScene or has an particularly intensive - * set of initialization routines to go through, consider implementing it - * in this method instead of the constructor. - **/ - virtual void init(); - /** * @return the id of this applet */ @@ -451,20 +443,6 @@ class PLASMA_EXPORT Applet : public QGraphicsWidget **/ bool hasFailedToLaunch() const; - /** - * Call this method when the applet fails to launch properly. An - * optional reason can be provided. - * - * Not that all children items will be deleted when this method is - * called. If you have pointers to these items, you will need to - * reset them after calling this method. - * - * @param failed true when the applet failed, false when it succeeded - * @param reason an optional reason to show the user why the applet - * failed to launch - **/ - void setFailedToLaunch(bool failed, const QString& reason = QString()); - /** * @return true if the applet currently needs to be configured, * otherwise, false @@ -637,6 +615,28 @@ class PLASMA_EXPORT Applet : public QGraphicsWidget void themeChanged(); protected: + /** + * This method is called once the applet is loaded and added to a Corona. + * If the applet requires a QGraphicsScene or has an particularly intensive + * set of initialization routines to go through, consider implementing it + * in this method instead of the constructor. + **/ + virtual void init(); + + /** + * Call this method when the applet fails to launch properly. An + * optional reason can be provided. + * + * Not that all children items will be deleted when this method is + * called. If you have pointers to these items, you will need to + * reset them after calling this method. + * + * @param failed true when the applet failed, false when it succeeded + * @param reason an optional reason to show the user why the applet + * failed to launch + **/ + void setFailedToLaunch(bool failed, const QString& reason = QString()); + /** * Called when a request to save the state of the applet is made * during runtime @@ -753,6 +753,10 @@ class PLASMA_EXPORT Applet : public QGraphicsWidget class Private; Private* const d; + + //Corona needs to access setFailedToLaunch and init + friend class Corona; + friend class Containment; }; } // Plasma namespace diff --git a/containment.cpp b/containment.cpp index a25807131..271996af0 100644 --- a/containment.cpp +++ b/containment.cpp @@ -316,9 +316,11 @@ void Containment::setContainmentType(Containment::Type type) } } else if (isContainment() && type == PanelContainment) { - d->createToolbox(); - d->toolbox->setSize(24); - d->toolbox->setIconSize(QSize(16, 16)); + if (!d->toolbox) { + d->createToolbox(); + d->toolbox->setSize(22); + d->toolbox->setIconSize(QSize(16, 16)); + } } else { delete d->toolbox; d->toolbox = 0;