From 4467261c950a5bf732be46cbdbe23a8971d2e7c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20M=C3=A9nard?= Date: Sun, 13 Apr 2008 13:23:39 +0000 Subject: [PATCH] Merge woc branch to trunk, say good bye to old plasma, there is a lot of stuff to port applets, please update to another revision to use the version that works green flag from aaron svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=796368 --- CMakeLists.txt | 2 +- abstractrunner.cpp | 50 +++----- abstractrunner.h | 9 -- applet.cpp | 250 +++++++------------------------------ applet.h | 106 ++-------------- applethandle.cpp | 4 +- containment.cpp | 171 +++++++++---------------- containment.h | 10 +- corona.cpp | 11 +- glapplet.cpp | 2 +- phase.cpp | 8 -- phase.h | 6 - scripting/appletscript.cpp | 4 +- scripting/runnerscript.cpp | 19 +-- scripting/runnerscript.h | 13 -- scripting/scriptengine.cpp | 10 -- scripting/scriptengine.h | 15 +-- searchmatch.cpp | 2 +- theme.h | 3 +- uiloader.cpp | 3 +- view.cpp | 6 +- widgets/CMakeLists.txt | 2 +- widgets/label.cpp | 3 +- widgets/label.h | 5 +- widgets/lineedit.cpp | 6 +- widgets/pushbutton.cpp | 3 +- widgets/pushbutton.h | 2 + widgets/webcontent.cpp | 2 +- widgets/widget.cpp | 146 ++-------------------- widgets/widget.h | 77 +----------- 30 files changed, 184 insertions(+), 766 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fbb1e4905..901cd9460 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ include (KDE4Defaults) include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${KDEBASE_WORKSPACE_SOURCE_DIR}/libs ${CMAKE_CURRENT_SOURCE_DIR}/.. ${KDE4_INCLUDES} ${OPENGL_INCLUDE_DIR}) add_subdirectory(widgets) -add_subdirectory(tests) +#add_subdirectory(tests) add_definitions(-DKDE_DEFAULT_DEBUG_AREA=1209) ########### next target ############### diff --git a/abstractrunner.cpp b/abstractrunner.cpp index afb66f578..ce2515925 100644 --- a/abstractrunner.cpp +++ b/abstractrunner.cpp @@ -25,10 +25,8 @@ #include #include #include -#include #include -#include "package.h" #include "scripting/runnerscript.h" #include "searchcontext.h" @@ -37,31 +35,33 @@ namespace Plasma class AbstractRunner::Private { -public: + public: + bool hasMatchOptions; + bool hasConfig; + Priority priority; + Speed speed; + RunnerScript* script; + KPluginInfo runnerDescription; + AbstractRunner* runner; + QTime runtime; + int fastRuns; + Private(AbstractRunner* r, KService::Ptr service) : priority(NormalPriority), speed(NormalSpeed), script(0), runnerDescription(service), runner(r), - fastRuns(0), - package(0) + fastRuns(0) { if (runnerDescription.isValid()) { - const QString language = runnerDescription.property("X-Plasma-Language").toString(); - if (!language.isEmpty()) { - const QString path = KStandardDirs::locate("data", - "plasma/runners/" + runnerDescription.pluginName() + "/"); - PackageStructure::Ptr structure = Plasma::packageStructure(language, Plasma::RunnerComponent); - structure->setPath(path); - package = new Package(path, structure); + QString language = runnerDescription.property("X-Plasma-Language").toString(); + if (!language.isEmpty()) { script = Plasma::loadScriptEngine(language, runner); if (!script) { kDebug() << "Could not create a" << language << "ScriptEngine for the" << runnerDescription.name() << "Runner."; - delete package; - package = 0; } else { QTimer::singleShot(0, runner, SLOT(init())); } @@ -69,25 +69,14 @@ public: } } - bool hasMatchOptions; - bool hasConfig; - Priority priority; - Speed speed; - RunnerScript* script; - KPluginInfo runnerDescription; - AbstractRunner* runner; - QTime runtime; - int fastRuns; - Package *package; - static QMutex bigLock; }; QMutex AbstractRunner::Private::bigLock; - AbstractRunner::AbstractRunner(QObject* parent, const QString& serviceId) -: QObject(parent), - d(new Private(this, KService::serviceByStorageId(serviceId))) +AbstractRunner::AbstractRunner(QObject* parent, const QString& serviceId) + : QObject(parent), + d(new Private(this, KService::serviceByStorageId(serviceId))) { } @@ -232,11 +221,6 @@ QString AbstractRunner::runnerName() const return d->runnerDescription.property("X-Plasma-RunnerName").toString(); } -const Package* AbstractRunner::package() const -{ - return d->package; -} - void AbstractRunner::init() { if (d->script) { diff --git a/abstractrunner.h b/abstractrunner.h index d83ba0768..a708ff852 100644 --- a/abstractrunner.h +++ b/abstractrunner.h @@ -36,7 +36,6 @@ class KCompletion; namespace Plasma { -class Package; class RunnerScript; /** @@ -169,14 +168,6 @@ class PLASMA_EXPORT AbstractRunner : public QObject */ QString runnerName() const; - /** - * Accessor for the associated Package object if any. - * Generally, only Plasmoids come in a Package. - * - * @return the Package object, or 0 if none - **/ - const Package* package() const; - protected: /** * Sets whether or not the the runner has options for matches diff --git a/applet.cpp b/applet.cpp index 597781438..27c943ba9 100644 --- a/applet.cpp +++ b/applet.cpp @@ -33,7 +33,10 @@ #include #include #include +#include #include +#include +#include #include #include @@ -103,7 +106,6 @@ public: package(0), needsConfigOverlay(0), background(0), - overlay(0), failureText(0), script(0), configXml(0), @@ -133,7 +135,6 @@ public: DataEngineManager::self()->unload( engine ); } delete background; - delete overlay; delete package; delete configXml; delete shadow; @@ -217,16 +218,6 @@ public: applet->setHasConfigurationInterface(true); } } - - QSizeF contentSize(const Applet* q) - { - if (failureText) { - return failureText->geometry().size(); - } - - return q->contentSize(); - } - QString instanceName() { if (!appletDescription.isValid()) { @@ -320,7 +311,6 @@ public: QList watchedForMouseMove; QStringList loadedEngines; Plasma::SvgPanel *background; - Plasma::SvgPanel *overlay; Plasma::LineEdit *failureText; AppletScript *script; ConfigXml* configXml; @@ -640,26 +630,29 @@ bool Applet::drawStandardBackground() const void Applet::setDrawStandardBackground(bool drawBackground) { + if + (drawBackground) + { + setWindowFlags(Qt::Window); + } + else + { + setWindowFlags(0); + } if (drawBackground) { if (!d->background) { d->background = new Plasma::SvgPanel("widgets/background"); - if (!Plasma::Theme::self()->image("widgets/overlay").isEmpty()) { - d->overlay = new Plasma::SvgPanel("widgets/overlay"); - } - int left, top, right, bottom; d->getBorderSize(left, top, right, bottom); - setMargins(0, 0, right, bottom); + setContentsMargins(0, 0, right, bottom); updateGeometry(); update(); } } else if (d->background) { delete d->background; - delete d->overlay; d->background = 0; - d->overlay = 0; - setMargins(0, 0, 0, 0); + setContentsMargins(0, 0, 0, 0); updateGeometry(); update(); } @@ -683,6 +676,15 @@ QString visibleFailureText(const QString& reason) return text; } +void Applet::paintWindowFrame ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) +{ + //Plasma::SvgPanel *background = new Plasma::SvgPanel("widgets/background"); + //background->paint(painter,geometry()); + setWindowFrameMargins(1,1,1,1); + painter->setPen(QPen(Qt::red)); + painter->drawRoundedRect(geometry(),5,5); +} + void Applet::setFailedToLaunch(bool failed, const QString& reason) { if (d->failed == failed) { @@ -702,8 +704,9 @@ void Applet::setFailedToLaunch(bool failed, const QString& reason) if (failed) { setDrawStandardBackground(true); - Layout* failureLayout = new BoxLayout(BoxLayout::TopToBottom, this); - failureLayout->setMargins(0, 0, 0, 0); + + #ifdef TOPORT + Layout* failureLayout = new BoxLayout(BoxLayout::TopToBottom, this); d->failureText = new LineEdit(this); d->failureText->setTextInteractionFlags( Qt::TextSelectableByMouse ); d->failureText->setStyled(false); @@ -715,8 +718,18 @@ void Applet::setFailedToLaunch(bool failed, const QString& reason) Theme::self()->colors()) .brush(QPalette::Normal).color()); failureLayout->addItem(d->failureText); - setGeometry(QRectF(geometry().topLeft(), d->failureText->sizeHint())); - } + #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(); } @@ -739,7 +752,7 @@ void Applet::setNeedsConfiguring(bool needsConfig) } d->needsConfigOverlay = new OverlayWidget(this); - d->needsConfigOverlay->resize(contentSize()); + d->needsConfigOverlay->resize(boundingRect().size()); int zValue = 100; foreach (QGraphicsItem *child, QGraphicsItem::children()) { @@ -753,7 +766,7 @@ void Applet::setNeedsConfiguring(bool needsConfig) PushButton* button = new PushButton(d->needsConfigOverlay); button->setText(i18n("Configure...")); connect(button, SIGNAL(clicked()), this, SLOT(showConfigurationInterface())); - QSizeF s = button->sizeHint(); + QSizeF s = button->geometry().size(); button->resize(s); button->setPos(d->needsConfigOverlay->boundingRect().width() / 2 - s.width() / 2, d->needsConfigOverlay->boundingRect().height() / 2 - s.height() / 2); @@ -783,7 +796,7 @@ void Applet::flushUpdatedConstraints() d->pendingConstraints = NoConstraint; if (c & Plasma::SizeConstraint && d->needsConfigOverlay) { - d->needsConfigOverlay->setGeometry(QRectF(QPointF(0, 0), contentSize())); + d->needsConfigOverlay->setGeometry(QRectF(QPointF(0, 0), boundingRect().size())); // FIXME:: rather horrible hack to work around the fact we don't have spacers // for layouts, and with WoC coming i'd rather not expend effort there QGraphicsItem * button = d->needsConfigOverlay->QGraphicsItem::children().first(); @@ -852,20 +865,6 @@ int Applet::type() const return Type; } -QRectF Applet::boundingRect() const -{ - QRectF rect = QRectF(QPointF(0,0), d->contentSize(this)); - - int left; - int right; - int top; - int bottom; - - d->getBorderSize(left, top, right, bottom); - //kDebug() << "Background , Border size" << d->background << left << top << right << bottom; - return rect.adjusted(-left, -top, right, bottom); -} - QPainterPath Applet::shape() const { if (isContainment()) { @@ -875,21 +874,6 @@ QPainterPath Applet::shape() const return Plasma::roundedRectangle(boundingRect().adjusted(-2, -2, 2, 2), 10); } -QSizeF Applet::sizeHint() const -{ - int left = 0; - int right = 0; - int top = 0; - int bottom = 0; - - d->getBorderSize(left, top, right, bottom); - QSizeF borderSize = QSizeF(left + right, top + bottom); - - //kDebug() << "Applet content size hint: " << contentSizeHint() << "plus our borders" << left << right << top << bottom; - - return contentSizeHint() + QSizeF(left + right, top + bottom); -} - Qt::Orientations Applet::expandingDirections() const { if (d->square) { @@ -975,7 +959,7 @@ void Applet::paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *opti coption.view = v; } - paintInterface(painter, &coption, QRect(QPoint(0,0), d->contentSize(this).toSize())); + paintInterface(painter, &coption, QRect(QPoint(0,0), boundingRect().size().toSize())); } painter->restore(); @@ -983,14 +967,7 @@ void Applet::paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *opti } //kDebug() << "paint interface of" << (QObject*) this; - paintInterface(painter, option, QRect(QPoint(0,0), d->contentSize(this).toSize())); - } - - if (d->overlay && - formFactor() != Plasma::Vertical && - formFactor() != Plasma::Horizontal) { - //kDebug() << "option rect is" << option->rect; - d->overlay->paint(painter, option->rect); + paintInterface(painter, option, QRect(QPoint(0,0), boundingRect().size().toSize())); } painter->restore(); @@ -1048,124 +1025,6 @@ Location Applet::location() const return c->location(); } -QRectF Applet::contentRect() const -{ - return QRectF(QPointF(0, 0), contentSize()); -} - -QSizeF Applet::contentSize() const -{ - int top, left, right, bottom; - d->getBorderSize(left, top, right, bottom); - - // kDebug() << "Geometry size: " << geometry().size(); - // kDebug() << "Borders: " << left << top << right << bottom; - - return (geometry().size() - QSizeF(left + right, top + bottom)).expandedTo(QSizeF(0, 0)); -} - -void Applet::setContentSize(const QSizeF &size) -{ - int top, left, right, bottom; - d->getBorderSize(left, top, right, bottom); - - resize(size + QSizeF(left + right, top + bottom)); -} - -void Applet::setContentSize(int width, int height) -{ - setContentSize(QSizeF(width, height)); -} - -QSizeF Applet::contentSizeHint() const -{ - static bool checkingScript = false; - - if (!checkingScript && d->script) { - checkingScript = true; - return d->script->contentSizeHint(); - } - - checkingScript = false; - QSizeF size; - if (layout()) { - size = layout()->sizeHint(); - } else { - size = contentSize(); - } - - QSizeF max = maximumContentSize(); - size = size.boundedTo(max); - if (d->square) { - //kDebug() << "SizeHintIn: " << (QObject*)this << size; - switch (formFactor()) { - case Plasma::Vertical: - if (size.width() > max.height()) { - size.setWidth(max.height()); - } - - size.setHeight(size.width()); - case Plasma::Horizontal: - case Plasma::Planar: - case Plasma::MediaCenter: - if (size.height() > max.width()) { - size.setHeight(max.width()); - } - - size.setWidth(size.height()); - default: - break; - } - - //kDebug() << "SizeHintOut: " << size; - return size; - } - - return size; -} - -void Applet::setMinimumContentSize(const QSizeF &minSize) -{ - int top, left, right, bottom; - d->getBorderSize(left, top, right, bottom); - - setMinimumSize(minSize + QSizeF(left + right, top + bottom)); -} - -void Applet::setMinimumContentSize(int minWidth, int minHeight) -{ - setMinimumContentSize(QSizeF(minWidth, minHeight)); -} - -QSizeF Applet::minimumContentSize() const -{ - int top, left, right, bottom; - d->getBorderSize(left, top, right, bottom); - - return minimumSize() - QSizeF(left + right, top + bottom); -} - -void Applet::setMaximumContentSize(const QSizeF &maxSize) -{ - int top, left, right, bottom; - d->getBorderSize(left, top, right, bottom); - - setMaximumSize(maxSize + QSizeF(left + right, top + bottom)); -} - -void Applet::setMaximumContentSize(int maxWidth, int maxHeight) -{ - setMaximumContentSize(QSizeF(maxWidth, maxHeight)); -} - -QSizeF Applet::maximumContentSize() const -{ - int top, left, right, bottom; - d->getBorderSize(left, top, right, bottom); - - return maximumSize() - QSizeF(left + right, top + bottom); -} - Qt::AspectRatioMode Applet::aspectRatioMode() const { return d->aspectRatioMode; @@ -1583,27 +1442,10 @@ QVariant Applet::itemChange(GraphicsItemChange change, const QVariant &value) void Applet::setGeometry(const QRectF& geometry) { - QSizeF s = size(); - QPointF p = pos(); - Widget::setGeometry(geometry); - //kDebug() << s << size(); - if (s != size()) { - if (d->background) { - //kDebug() << "setting background to" << size(); - d->background->resize(size()); - } - - if (d->overlay) { - //kDebug() << "setting overlay to" << size(); - d->overlay->resize(size()); - } - - updateConstraints(Plasma::SizeConstraint); - emit geometryChanged(); - } else if (p != pos()) { - emit geometryChanged(); - } + updateConstraints(Plasma::SizeConstraint); + //FIXME see for who is connect to this??? + //emit geometryChanged(); } void Applet::raise() diff --git a/applet.h b/applet.h index 20a0e4f0d..3c6e64a9d 100644 --- a/applet.h +++ b/applet.h @@ -228,90 +228,8 @@ class PLASMA_EXPORT Applet : public Widget * @see Plasma::Location */ virtual Location location() const; - - /** - * Returns the rect that the contents are positioned within in local coordinates - */ - QRectF contentRect() const; - - /** - * Returns the area within which contents can be painted. - **/ - QSizeF contentSize() const; - - /** - * Sets the content size. - * - * @note Normally an applet should never - * call this directly except in the constructor to provide a default - * size - * - * @param size the new size of the contents area - */ - void setContentSize(const QSizeF &size); - - /** - * Sets the content size. - * - * @note Normally an applet should never - * call this directly except in the constructor to provide a default - * size - * - * @param width the new width of the contents area - * @param height the new height of the contents area - */ - void setContentSize(int width, int height); - - /** - * Returns an ideal size for the applet's content. - * Applets can re-implement this to provide a suitable size based - * on their contents. - * - * Unlike sizeHint() , contentSizeHint() does not include the - * size of any borders surrounding the content area. - * - * The default implementation returns the sizeHint() of the applet's - * layout if it has one, or a null size otherwise. - */ - virtual QSizeF contentSizeHint() const; - - /** - * Sets the minimum size for the content of this applet - */ - void setMinimumContentSize(const QSizeF &minSize); - - /** - * Sets the minimum size for the content of this applet - * - * @param minWidth the new minimum width of the contents area - * @param minHeight the new minimum height of the contents area - */ - void setMinimumContentSize(int minWidth, int minHeight); - - /** - * Get the minimum size for the content of this applet - */ - QSizeF minimumContentSize() const; - - /** - * Sets the maximum size for the content of this applet. - */ - void setMaximumContentSize(const QSizeF &maxSize); - - /** - * Sets the maximum size for the content of this applet - * - * @param maxWidth the new maximum width of the contents area - * @param maxHeight the new maximum height of the contents area - */ - void setMaximumContentSize(int maxWidth, int maxHeight); - - /** - * Get the maximum size for the content of this applet - */ - QSizeF maximumContentSize() const; - - /** + + /** * @return the prefered aspect ratio mode for placement and resizing */ Qt::AspectRatioMode aspectRatioMode() const; @@ -492,6 +410,8 @@ class PLASMA_EXPORT Applet : public Widget **/ void setDrawStandardBackground(bool drawBackground); + void paintWindowFrame ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget); + /** * If for some reason, the applet fails to get up on its feet (the * library couldn't be loaded, necessary hardware support wasn't found, @@ -573,30 +493,25 @@ class PLASMA_EXPORT Applet : public Widget /** * Sets whether or not this Applet is acting as a Containment */ - virtual void setIsContainment(bool isContainment); + void setIsContainment(bool isContainment); /** * @return true if this Applet is currently being used as a Containment, false otherwise */ bool isContainment() const; - /** + /** * Sets the geometry of this Plasma::Applet. Should not be used directly by * applet subclasses. * @param geometry the geometry to apply to this Plasma::Applet. */ void setGeometry(const QRectF &geometry); - + /** * Causes this applet to raise above all other applets. */ void raise(); - /** - * Reimplemented from LayoutItem - */ - QSizeF sizeHint() const; - /** * Reimplemented from Plasma::Widget */ @@ -608,12 +523,7 @@ class PLASMA_EXPORT Applet : public Widget int type() const; enum { Type = Plasma::AppletType }; - /** - * Reimplemented from QGraphicsItem - **/ - QRectF boundingRect() const; - - /** + /** * Reimplemented from QGraphicsItem */ QPainterPath shape() const; diff --git a/applethandle.cpp b/applethandle.cpp index ba4daead1..3fce44398 100644 --- a/applethandle.cpp +++ b/applethandle.cpp @@ -63,7 +63,7 @@ AppletHandle::AppletHandle(Containment *parent, Applet *applet) m_gradientColor = colors.background(KColorScheme::NormalBackground).color(); QTransform originalMatrix = m_applet->transform(); - QRectF rect(m_applet->boundingRect()); + QRectF rect(m_applet->contentsRect()); QPointF center = rect.center(); originalMatrix.translate(center.x(), center.y()); @@ -440,7 +440,7 @@ void AppletHandle::mouseMoveEvent(QGraphicsSceneMouseEvent *event) // If the applet doesn't have a minimum size, calculate based on a // minimum content area size of 16x16 if (min.isEmpty()) { - min = m_applet->boundingRect().size() - m_applet->contentRect().size(); + min = m_applet->boundingRect().size() - m_applet->boundingRect().size(); min += QSizeF(16, 16); } diff --git a/containment.cpp b/containment.cpp index 5636c42ee..3143da93a 100644 --- a/containment.cpp +++ b/containment.cpp @@ -27,6 +27,8 @@ #include #include #include +#include +#include #include #include @@ -83,33 +85,6 @@ public: return toolbox; } - void initToolBox() - { - if (toolbox) { - return; - } - - if (type == DesktopContainment) { - Plasma::Widget *addWidgetTool = q->addToolBoxTool("addwidgets", "list-add", i18n("Add Widgets")); - connect(addWidgetTool, SIGNAL(clicked()), q, SIGNAL(showAddWidgets())); - - Plasma::Widget *zoomInTool = q->addToolBoxTool("zoomIn", "zoom-in", i18n("Zoom In")); - connect(zoomInTool, SIGNAL(clicked()), q, SLOT(zoomIn())); - - Plasma::Widget *zoomOutTool = q->addToolBoxTool("zoomOut", "zoom-out", i18n("Zoom Out")); - connect(zoomOutTool, SIGNAL(clicked()), q, SIGNAL(zoomOut())); - - if (!q->isKioskImmutable()) { - Plasma::Widget *lockTool = q->addToolBoxTool("lockWidgets", "object-locked", - q->isImmutable() ? i18n("Unlock Widgets") : - i18n("Lock Widgets")); - connect(lockTool, SIGNAL(clicked()), q, SLOT(toggleDesktopImmutability())); - } - } else if (type == PanelContainment) { - createToolbox(); - } - } - void positionToolbox() { QRectF r; @@ -147,10 +122,8 @@ void Containment::Private::setLockToolText() QSizeF iconSize = icon->sizeFromIconSize(22); icon->setMinimumSize(iconSize); icon->setMaximumSize(iconSize); - icon->resize(icon->sizeHint()); + icon->resize(icon->size()); } - - toolbox->enableTool("addwidgets", !q->isImmutable()); } } @@ -269,6 +242,7 @@ void Containment::containmentConstraintsUpdated(Plasma::Constraints constraints) if (constraints & Plasma::ScreenConstraint && d->toolbox) { d->toolbox->setPos(geometry().width() - d->toolbox->boundingRect().width(), 0); + d->toolbox->enableTool("addwidgets", !isImmutable()); } if (constraints & Plasma::SizeConstraint) { @@ -292,26 +266,30 @@ void Containment::setContainmentType(Containment::Type type) { d->type = type; - // reset the toolbox! - delete d->toolbox; - d->toolbox = 0; + if (isContainment() && type == DesktopContainment) { + if (!d->toolbox) { + Plasma::Widget *addWidgetTool = addToolBoxTool("addwidgets", "list-add", i18n("Add Widgets")); + connect(addWidgetTool, SIGNAL(clicked()), this, SIGNAL(showAddWidgets())); - if (isContainment()) { - d->initToolBox(); + Plasma::Widget *zoomInTool = addToolBoxTool("zoomIn", "zoom-in", i18n("Zoom In")); + connect(zoomInTool, SIGNAL(clicked()), this, SLOT(zoomIn())); + + Plasma::Widget *zoomOutTool = addToolBoxTool("zoomOut", "zoom-out", i18n("Zoom Out")); + connect(zoomOutTool, SIGNAL(clicked()), this, SIGNAL(zoomOut())); + + if (!isKioskImmutable()) { + Plasma::Widget *lockTool = addToolBoxTool("lockWidgets", "object-locked", + isImmutable() ? i18n("Unlock Widgets") : + i18n("Lock Widgets")); + connect(lockTool, SIGNAL(clicked()), this, SLOT(toggleDesktopImmutability())); + } + } + } else { + delete d->toolbox; + d->toolbox = 0; } } -void Containment::setIsContainment(bool isContainment) -{ - Applet::setIsContainment(isContainment); - - // reset the toolbox! - delete d->toolbox; - d->toolbox = 0; - - d->initToolBox(); -} - Corona* Containment::corona() const { return dynamic_cast(scene()); @@ -460,14 +438,15 @@ void Containment::setFormFactor(FormFactor formFactor) positionPanel(true); } - Layout *lay = layout(); - if (lay) { + QGraphicsLayout *lay = layout(); + QGraphicsLinearLayout * linearLay = dynamic_cast(lay); + if (linearLay) { foreach (Applet* applet, d->applets) { - lay->addItem(applet); + linearLay->addItem(applet); applet->updateConstraints(Plasma::FormFactorConstraint); } + //linearLay->addStretch(); } - updateConstraints(Plasma::FormFactorConstraint); } @@ -478,23 +457,27 @@ void Containment::createLayout(FormFactor formFactor) switch (formFactor) { case Planar: case MediaCenter: - new FreeLayout(this); + //setLayout(new QGraphicsLinearLayout()); break; case Horizontal: { - BoxLayout *lay = new BoxLayout(BoxLayout::LeftToRight, this); - lay->setMargins(0, 0, 0, 0); + QGraphicsLinearLayout *lay = new QGraphicsLinearLayout(); + lay->setOrientation(Qt::Horizontal); + lay->setContentsMargins(0, 0, 0, 0); lay->setSpacing(4); + setLayout(lay); break; } case Vertical: { - BoxLayout *lay = new BoxLayout(BoxLayout::TopToBottom, this); - lay->setMargins(0, 0, 0, 0); + QGraphicsLinearLayout *lay = new QGraphicsLinearLayout(); + lay->setOrientation(Qt::Vertical); + lay->setContentsMargins(0, 0, 0, 0); lay->setSpacing(4); + setLayout(lay); break; } default: kDebug() << "This can't be happening! Or... can it? ;)" << d->formFactor; - setLayout(0); //auto-delete + //setLayout(0); //auto-delete break; } } @@ -595,19 +578,23 @@ Applet* Containment::addApplet(const QString& name, const QVariantList& args, ui if (containmentType() != PanelContainment) { //kDebug() << "adding applet" << applet->name() << "with a default geometry of" << appletGeometry << appletGeometry.isValid(); if (appletGeometry.isValid()) { - applet->setGeometry(appletGeometry); + //applet->setGeometry(appletGeometry); } else if (appletGeometry.x() != -1 && appletGeometry.y() != -1) { // yes, this means we can't have items start -1, -1 - applet->setGeometry(QRectF(appletGeometry.topLeft(), - applet->sizeHint())); + //applet->setGeometry(QRectF(appletGeometry.topLeft(), +// applet->sizeHint())); } else if (geometry().isValid()) { - applet->setGeometry(geometryForApplet(applet)); + //applet->setGeometry(geometryForApplet(applet)); } } //kDebug() << applet->name() << "sizehint:" << applet->sizeHint() << "geometry:" << applet->geometry(); - connect(applet, SIGNAL(configNeedsSaving()), this, SIGNAL(configNeedsSaving())); + Corona *c = corona(); + if (c) { + connect(applet, SIGNAL(configNeedsSaving()), corona(), SLOT(scheduleConfigSync())); + } + emit appletAdded(applet); return applet; } @@ -637,7 +624,7 @@ void Containment::addApplet(Applet *applet, const QPointF &pos, bool delayInit) // Calculate where the user wants the applet to go before adding it //so long as this isn't a new applet with a delayed init if (! delayInit || (currentContainment && currentContainment != this)) { - index = indexAt(pos); + index = indexAt(pos); } } @@ -660,13 +647,14 @@ void Containment::addApplet(Applet *applet, const QPointF &pos, bool delayInit) connect(applet, SIGNAL(destroyed(QObject*)), this, SLOT(appletDestroyed(QObject*))); - Layout *lay = layout(); + QGraphicsLayout *lay = layout(); // Reposition the applet after adding has been done + //FIXME adding position incorrect if (index != -1) { - BoxLayout *l = dynamic_cast(lay); + QGraphicsLinearLayout *l = dynamic_cast(lay); if (l) { - l->insertItem(index, l->takeAt(l->indexOf(applet))); + l->insertItem(index, applet); d->applets.removeAll(applet); d->applets.insert(index, applet); } else { @@ -679,21 +667,24 @@ void Containment::addApplet(Applet *applet, const QPointF &pos, bool delayInit) applet->setPos(pos); } - if (lay) { - lay->addItem(applet); + QGraphicsLinearLayout *l = dynamic_cast(lay); + if (l) { + l->addItem(applet); } + //l->addStretch(); } prepareApplet(applet, delayInit); //must at least flush constraints + } //containment-relative pos... right? int Containment::indexAt(const QPointF &pos) const { - if (pos == QPointF(-1, -1)) { +/* if (pos == QPointF(-1, -1)) { return -1; } - BoxLayout *l = dynamic_cast(layout()); + QGraphicsLinearLayout *l = dynamic_cast(layout()); if (l) { foreach (Applet *existingApplet, d->applets) { if (formFactor() == Horizontal) { @@ -718,7 +709,7 @@ int Containment::indexAt(const QPointF &pos) const } } } - } + }*/ return -1; } @@ -740,44 +731,6 @@ void Containment::prepareApplet(Applet *applet, bool delayInit) } } -QRectF Containment::geometryForApplet(Applet *applet) const -{ - // The value part of these maps isn't used. Only sorted keys are needed. - QMap xPositions; - QMap yPositions; - - // Add the top-left corner offset by the applet's border - QPointF offset = applet->boundingRect().topLeft(); - xPositions[-offset.x()] = true; - yPositions[-offset.y()] = true; - - QRectF placement(QPointF(0, 0), applet->sizeHint()); - foreach (Applet *existingApplet, d->applets) { - QPointF bottomRight = existingApplet->geometry().bottomRight(); - if (bottomRight.x() + placement.width() < geometry().width()) { - xPositions[bottomRight.x() + 1] = true; - } - if (bottomRight.y() + placement.height() < geometry().height()) { - yPositions[bottomRight.y() + 1] = true; - } - } - - // Try to fit it in an empty space - foreach (qreal x, xPositions.keys()) { - foreach (qreal y, yPositions.keys()) { - placement.moveTo(x, y); - if (regionIsEmpty(placement, applet)) { - return placement; - } - } - } - - // Otherwise place it in the centre of the screen - placement.moveLeft(geometry().width() / 2 - placement.width() / 2); - placement.moveTop(geometry().height() / 2 - placement.height() / 2); - return placement; -} - bool Containment::regionIsEmpty(const QRectF ®ion, Applet *ignoredApplet) const { foreach (Applet *applet, d->applets) { @@ -1272,7 +1225,7 @@ Plasma::Widget * Containment::addToolBoxTool(const QString& toolName, const QStr QSizeF iconSize = tool->sizeFromIconSize(22); tool->setMinimumSize(iconSize); tool->setMaximumSize(iconSize); - tool->resize(tool->sizeHint()); + tool->resize(tool->size()); d->createToolbox()->addTool(tool, toolName); diff --git a/containment.h b/containment.h index 96a4c7d3c..ac9fb5cc4 100644 --- a/containment.h +++ b/containment.h @@ -142,11 +142,6 @@ class PLASMA_EXPORT Containment : public Applet */ void setContainmentType(Containment::Type type); - /** - * Reimplemented from Applet - */ - void setIsContainment(bool isContainment); - /** * Returns the Corona (if any) that this Containment is hosted by */ @@ -228,12 +223,12 @@ class PLASMA_EXPORT Containment : public Applet */ void addApplet(Applet *applet, const QPointF &pos = QPointF(-1, -1), bool dontInit = true); - /** + /** * @return the index to insert an applet at if you want it near the point pos. * @param pos the containment-relative position */ virtual int indexAt(const QPointF &pos) const; - + /** * Sets the physical screen this Containment is associated with. * @@ -423,7 +418,6 @@ class PLASMA_EXPORT Containment : public Applet void repositionToolbox(); private: - QRectF geometryForApplet(Applet *applet) const; bool regionIsEmpty(const QRectF ®ion, Applet *ignoredApplet=0) const; void prepareApplet(Applet *applet, bool delayInit); void positionPanel(bool force = false); diff --git a/corona.cpp b/corona.cpp index 024ed42d9..136c99a9b 100644 --- a/corona.cpp +++ b/corona.cpp @@ -362,11 +362,14 @@ Containment* Corona::addContainment(const QString& name, const QVariantList& arg } d->containments.append(containment); - connect(containment, SIGNAL(destroyed(QObject*)), SLOT(containmentDestroyed(QObject*))); - connect(containment, SIGNAL(launchActivated()), SIGNAL(launchActivated())); - connect(containment, SIGNAL(configNeedsSaving()), SLOT(scheduleConfigSync())); + connect(containment, SIGNAL(destroyed(QObject*)), + this, SLOT(containmentDestroyed(QObject*))); + connect(containment, SIGNAL(launchActivated()), + SIGNAL(launchActivated())); + connect(containment, SIGNAL(configNeedsSaving()), + SLOT(scheduleConfigSync())); connect(containment, SIGNAL(screenChanged(int,int,Plasma::Containment*)), - SIGNAL(screenOwnerChanged(int,int,Plasma::Containment*))); + this, SIGNAL(screenOwnerChanged(int,int,Plasma::Containment*))); if (!delayedInit) { emit containmentAdded(containment); diff --git a/glapplet.cpp b/glapplet.cpp index 70ec3279b..4a0840d6f 100644 --- a/glapplet.cpp +++ b/glapplet.cpp @@ -186,7 +186,7 @@ void GLApplet::paintInterface(QPainter *painter, glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); QMatrix m = painter->worldMatrix(); - QRect deviceRect = m.mapRect(QRect(QPoint(23, 25), contentSize().toSize())); + QRect deviceRect = m.mapRect(QRect(QPoint(23, 25), boundingRect().size().toSize())); d->updateGlSize(deviceRect.size()); // redirect this widget's painting into the pbuffer diff --git a/phase.cpp b/phase.cpp index 1e246ba1c..106b87356 100644 --- a/phase.cpp +++ b/phase.cpp @@ -489,14 +489,6 @@ QPixmap Phase::animationResult(AnimId id) return state->pixmap; } -bool Phase::isAnimating() const -{ - return (!d->animatedItems.isEmpty() || - !d->movingItems.isEmpty() || - !d->animatedElements.isEmpty() || - !d->customAnims.isEmpty()); -} - void Phase::timerEvent(QTimerEvent *event) { Q_UNUSED(event) diff --git a/phase.h b/phase.h index f7f80bc50..ec02d81f2 100644 --- a/phase.h +++ b/phase.h @@ -116,12 +116,6 @@ public: Q_INVOKABLE void setAnimationPixmap(AnimId id, const QPixmap &pixmap); Q_INVOKABLE QPixmap animationResult(AnimId id); - /** - * @return true if there are animations happening - * @since 4.1 - */ - Q_INVOKABLE bool isAnimating() const; - Q_SIGNALS: void animationComplete(QGraphicsItem *item, Plasma::Phase::Animation anim); void movementComplete(QGraphicsItem *item); diff --git a/scripting/appletscript.cpp b/scripting/appletscript.cpp index 2fe620eb7..897fb81fd 100644 --- a/scripting/appletscript.cpp +++ b/scripting/appletscript.cpp @@ -63,13 +63,13 @@ void AppletScript::paintInterface(QPainter* painter, const QStyleOptionGraphicsI QSizeF AppletScript::contentSizeHint() const { - return applet()->contentSizeHint(); + return applet()->boundingRect().size(); } QSizeF AppletScript::size() const { if (applet()) { - return applet()->contentSize(); + return applet()->boundingRect().size(); } return QSizeF(); diff --git a/scripting/runnerscript.cpp b/scripting/runnerscript.cpp index 4afb76592..d52909130 100644 --- a/scripting/runnerscript.cpp +++ b/scripting/runnerscript.cpp @@ -17,10 +17,9 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include "plasma/scripting/runnerscript.h" +#include "runnerscript.h" -#include "plasma/abstractrunner.h" -#include "plasma/package.h" +#include "abstractrunner.h" namespace Plasma { @@ -63,20 +62,6 @@ void RunnerScript::exec(const Plasma::SearchContext *search, const Plasma::Searc Q_UNUSED(action) } -const Package* RunnerScript::package() const -{ - return 0; -} - -QString RunnerScript::mainScript() const -{ - if (!package()) { - return QString(); - } else { - return package()->filePath("mainscript"); - } -} - } // Plasma namespace #include "runnerscript.moc" diff --git a/scripting/runnerscript.h b/scripting/runnerscript.h index 0447aa915..bed8fea87 100644 --- a/scripting/runnerscript.h +++ b/scripting/runnerscript.h @@ -70,19 +70,6 @@ public: */ virtual void exec(const Plasma::SearchContext *search, const Plasma::SearchMatch *action); -protected Q_SLOTS: - /** - * @return absolute path to the main script file for this plasmoid - */ - QString mainScript() const; - - /** - * @return the Package associated with this plasmoid which can - * be used to request resources, such as images and - * interface files. - */ - const Package* package() const; - private: class Private; Private * const d; diff --git a/scripting/scriptengine.cpp b/scripting/scriptengine.cpp index 9ea10679c..c99cfbbcb 100644 --- a/scripting/scriptengine.cpp +++ b/scripting/scriptengine.cpp @@ -51,16 +51,6 @@ bool ScriptEngine::init() return true; } -const Package* ScriptEngine::package() const -{ - return 0; -} - -QString ScriptEngine::mainScript() const -{ - return QString(); -} - QStringList knownLanguages(ComponentTypes types) { QString constraintTemplate = "'%1' in [X-Plasma-ComponentTypes]"; diff --git a/scripting/scriptengine.h b/scripting/scriptengine.h index bac99ad81..c7caf0662 100644 --- a/scripting/scriptengine.h +++ b/scripting/scriptengine.h @@ -70,21 +70,8 @@ public: */ virtual bool init(); -protected Q_SLOTS: - /** - * @return absolute path to the main script file for this plasmoid - */ - virtual QString mainScript() const; - - /** - * @return the Package associated with this plasmoid which can - * be used to request resources, such as images and - * interface files. - */ - virtual const Package* package() const; - private: - class Private; + class Private; Private * const d; }; diff --git a/searchmatch.cpp b/searchmatch.cpp index 1fa48ae05..a8170132a 100644 --- a/searchmatch.cpp +++ b/searchmatch.cpp @@ -134,7 +134,7 @@ void SearchMatch::setEnabled( bool enabled ) bool SearchMatch::isEnabled() const { - return d->enabled; + return d->enabled; } bool SearchMatch::operator<(const SearchMatch& other) const diff --git a/theme.h b/theme.h index 5c8eb04af..6e5ceebbd 100644 --- a/theme.h +++ b/theme.h @@ -93,8 +93,7 @@ class PLASMA_EXPORT Theme : public QObject * * @arg name the name of the file in the theme directory (without the * ".svg" part or a leading slash) - * @return the full path to the requested file for the current theme, - * or an empty string if the image is not available + * @return the full path to the requested file for the current theme */ Q_INVOKABLE QString image( const QString& name ) const; diff --git a/uiloader.cpp b/uiloader.cpp index da3398e82..9a5b7aca9 100644 --- a/uiloader.cpp +++ b/uiloader.cpp @@ -44,8 +44,7 @@ public: }; UiLoader::UiLoader( QObject *parent ) - : QObject(parent), - d(new Private()) + : d( new Private() ) { d->widgets << "CheckBox" diff --git a/view.cpp b/view.cpp index c6e703c64..61f13d022 100644 --- a/view.cpp +++ b/view.cpp @@ -157,10 +157,10 @@ void View::setContainment(Containment *containment) } d->containment = containment; - if (!containment) { + if (! containment) { return; } - + if (screen > -1) { containment->setScreen(screen); } @@ -172,7 +172,7 @@ void View::setContainment(Containment *containment) } updateSceneRect(); - connect(containment, SIGNAL(geometryChanged()), this, SLOT(updateSceneRect())); + //connect(containment, SIGNAL(geometryChanged()), this, SLOT(updateSceneRect())); } Containment* View::containment() const diff --git a/widgets/CMakeLists.txt b/widgets/CMakeLists.txt index c2404eddc..ac3b18770 100644 --- a/widgets/CMakeLists.txt +++ b/widgets/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory( tests ) +#add_subdirectory( tests ) diff --git a/widgets/label.cpp b/widgets/label.cpp index 441d87a2e..b35c0e805 100644 --- a/widgets/label.cpp +++ b/widgets/label.cpp @@ -72,13 +72,14 @@ qreal Label::heightForWidth(qreal w) const //return m.boundingRect(QRectF(0, 0, w, 9999), d->alignment | Qt::TextWordWrap, d->text).height(); return 0; } - +#ifdef REMOVE QSizeF Label::sizeHint() const { QFontMetricsF m(d->textFont); return m.boundingRect(QRectF(0,0,9999,9999), d->alignment | Qt::TextWordWrap, d->text).size(); //return m.boundingRect(QRectF(0, 0, d->maximumWidth, 9999), d->alignment | Qt::TextWordWrap, d->text).size(); } +#endif void Label::setText(const QString& text) { diff --git a/widgets/label.h b/widgets/label.h index 640ddd479..e16b365eb 100644 --- a/widgets/label.h +++ b/widgets/label.h @@ -72,11 +72,12 @@ class PLASMA_EXPORT Label : public Plasma::Widget */ qreal heightForWidth(qreal w) const; - /** + #ifdef REMOVE + /** * Reimplemented from Plasma::Widget. */ QSizeF sizeHint() const; - + #endif /** * Sets the text to be displayed. */ diff --git a/widgets/lineedit.cpp b/widgets/lineedit.cpp index 2127bf4cd..61fc2e257 100644 --- a/widgets/lineedit.cpp +++ b/widgets/lineedit.cpp @@ -46,9 +46,9 @@ class LineEdit::Private QString defaultText; QString oldText; - bool showingDefaultText : 1; - bool styled : 1; - bool multiline : 1; + bool showingDefaultText; + bool styled; + bool multiline; }; diff --git a/widgets/pushbutton.cpp b/widgets/pushbutton.cpp index 0b28865a3..3fd881a83 100644 --- a/widgets/pushbutton.cpp +++ b/widgets/pushbutton.cpp @@ -292,7 +292,7 @@ Qt::Orientations PushButton::expandingDirections() const { return Qt::Horizontal; } - +#ifdef REMOVE QSizeF PushButton::sizeHint() const { int width = 0; @@ -315,6 +315,7 @@ QSizeF PushButton::sizeHint() const return QSizeF((QApplication::style()->sizeFromContents(QStyle::CT_PushButton, &option, QSize(width, height), 0). expandedTo(QApplication::globalStrut()))); } +#endif } // namespace Plasma diff --git a/widgets/pushbutton.h b/widgets/pushbutton.h index 99f31b674..7ba089ef3 100644 --- a/widgets/pushbutton.h +++ b/widgets/pushbutton.h @@ -163,7 +163,9 @@ public: // NOTE: bogus QSizeF minimumSize() const; Qt::Orientations expandingDirections() const; + #ifdef REMOVE QSizeF sizeHint() const; + #endif Q_SIGNALS: /** diff --git a/widgets/webcontent.cpp b/widgets/webcontent.cpp index b845c9562..1422dfe2f 100644 --- a/widgets/webcontent.cpp +++ b/widgets/webcontent.cpp @@ -76,7 +76,7 @@ QSizeF WebContent::sizeHint() const return d->page->mainFrame()->contentsSize(); } - return Widget::sizeHint(); + return Widget::size(); } void WebContent::setPage(QWebPage *page) diff --git a/widgets/widget.cpp b/widgets/widget.cpp index f45529f13..b71edfe74 100644 --- a/widgets/widget.cpp +++ b/widgets/widget.cpp @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include @@ -122,8 +124,7 @@ bool Widget::Private::shouldPaint(QPainter *painter, const QTransform &transform } Widget::Widget(QGraphicsItem *parent, QObject* parentObject) - : QObject(parentObject), - QGraphicsItem(parent), + : QGraphicsWidget(parent), d(new Private) { setFlag(QGraphicsItem::ItemClipsToShape, true); @@ -166,7 +167,7 @@ Widget::CachePaintMode Widget::cachePaintMode() const void Widget::update(const QRectF &rect) { - QGraphicsItem::update(rect); + QGraphicsWidget::update(rect); } Qt::Orientations Widget::expandingDirections() const @@ -174,32 +175,9 @@ Qt::Orientations Widget::expandingDirections() const return Qt::Horizontal | Qt::Vertical; } -void Widget::setMinimumSize(const QSizeF& newMin) +QFont Widget::font() const { - d->minimumSize = newMin; - QSizeF s = size(); - if (s != s.expandedTo(newMin)) { - setGeometry(QRectF(pos(), s.expandedTo(newMin))); - } -} - -QSizeF Widget::minimumSize() const -{ - return d->minimumSize; -} - -void Widget::setMaximumSize(const QSizeF& newMax) -{ - d->maximumSize = newMax; - QSizeF s = size(); - if (s != s.boundedTo(newMax)) { - setGeometry(QRectF(pos(), s.boundedTo(newMax))); - } -} - -QSizeF Widget::maximumSize() const -{ - return d->maximumSize; + return QApplication::font(); } bool Widget::hasHeightForWidth() const @@ -233,87 +211,7 @@ QRectF Widget::geometry() const void Widget::setSize(const QSizeF &s) { - LayoutItem::setSize(s); -} - -void Widget::setGeometry(const QRectF& geometry) -{ - setPos(geometry.topLeft()); - if (geometry.size().width() > 0 && geometry.size().height() > 0 && size() != geometry.size()) { - prepareGeometryChange(); - qreal width = qBound(d->minimumSize.width(), geometry.size().width(), d->maximumSize.width()); - qreal height = qBound(d->minimumSize.height(), geometry.size().height(), d->maximumSize.height()); - - setSize(QSizeF(width, height)); - - qreal xd = topLeft().x(); - qreal yd = topLeft().y(); - - if (xd < 0) { - width -= xd; - xd = 0; - } - - if (yd < 0) { - height -= yd; - yd = 0; - } - - if (layout()) { - QRectF r(QPointF(xd, yd), QSizeF(width, height)); - r = adjustToMargins(r); - layout()->setGeometry(r); - /*if (qobject_cast(this)) { - kDebug() << (QObject*)this << this->geometry() << this->topLeft() - << "layout geometry is now" << r << margin(RightMargin); - }*/ - } - - if (managingLayout()) { - //kDebug() << "invalidating managing layout"; - managingLayout()->invalidate(); - } - } - - update(); -} - -void Widget::updateGeometry() -{ - if (managingLayout()) { - managingLayout()->invalidate(); - } else { - setGeometry(QRectF(pos(), sizeHint())); - } -} - -QSizeF Widget::sizeHint() const -{ - if (layout()) { - return layout()->sizeHint(); - } else { - return size(); - } -} - -QFont Widget::font() const -{ - return QApplication::font(); -} - -QRectF Widget::boundingRect() const -{ - return QRectF(QPointF(0,0), size()); -} - -void Widget::resize(const QSizeF& size) -{ - setGeometry(QRectF(pos(), size)); -} - -void Widget::resize(qreal w, qreal h) -{ - resize(QSizeF(w, h)); + resize(s); } Widget *Widget::parent() const @@ -347,9 +245,9 @@ void Widget::addChild(Widget *w) w->setParentItem(this); //kDebug() << "Added Child Widget" << (QObject*)w << "our geom is" << geometry(); - - if (layout()) { - layout()->addItem(w); + QGraphicsLinearLayout * lay = dynamic_cast(layout()); + if (lay) { + lay->addItem(w); } updateGeometry(); @@ -411,30 +309,6 @@ void Widget::paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *opti // Replaced by widget's own function } -QVariant Widget::itemChange(GraphicsItemChange change, const QVariant &value) -{ - if (change == QGraphicsItem::ItemChildRemovedChange) { - if (layout() && !isAncestorOf(value.value())) { - layout()->removeItem(dynamic_cast(value.value())); - updateGeometry(); - } - } - - return QGraphicsItem::itemChange(change, value); -} - -void Widget::managingLayoutChanged() -{ - if (managingLayout()) { - d->wasMovable = flags() & ItemIsMovable; - if (!dynamic_cast(managingLayout())) { - setFlag(ItemIsMovable, false); - } - } else { - setFlag(ItemIsMovable, d->wasMovable); - } -} - QPoint Widget::popupPosition(const QSize &s) const { QGraphicsView *v = view(); diff --git a/widgets/widget.h b/widgets/widget.h index 7131083a7..53a15451c 100644 --- a/widgets/widget.h +++ b/widgets/widget.h @@ -22,7 +22,7 @@ #ifndef WIDGET_H_ #define WIDGET_H_ -#include +#include #include #include @@ -63,16 +63,11 @@ class Layout; * To implement a Widget, just subclass Plasma::Widget and implement at minimum, * sizeHint() and paintWidget() */ -class PLASMA_EXPORT Widget : public QObject, - public QGraphicsItem, - public LayoutItem +class PLASMA_EXPORT Widget : public QGraphicsWidget { Q_OBJECT Q_PROPERTY( Qt::Orientations expandingDirections READ expandingDirections ) - Q_PROPERTY( QSizeF minimumSize READ minimumSize WRITE setMinimumSize ) - Q_PROPERTY( QSizeF maximumSize READ maximumSize WRITE setMaximumSize ) Q_PROPERTY( QRectF geometry READ geometry WRITE setGeometry ) - Q_PROPERTY( QSizeF sizeHint READ sizeHint ) Q_PROPERTY( QSizeF size READ size WRITE resize ) Q_PROPERTY( qreal opacity READ opacity WRITE setOpacity ) @@ -102,28 +97,6 @@ public: */ virtual Qt::Orientations expandingDirections() const; - /** - * Sets the minimum size of the Widget. - * @param size the size to set as the minimum size. - */ - void setMinimumSize(const QSizeF& size); - - /** - * @return minimum size of the Widget. - */ - QSizeF minimumSize() const; - - /** - * Sets the maximum size of the Widget. - * @param size the size to set as the maximum size. - */ - void setMaximumSize(const QSizeF& size); - - /** - * @return maximum size of the Widget. - */ - QSizeF maximumSize() const; - /** * This method is used by Plasma::Layout to determine whether this widget * can provide a height value given a width value. @@ -159,53 +132,11 @@ public: */ QRectF geometry() const; - /** - * Sets the geometry of this Widget. - */ - /** - * Sets the geometry of this Plasma::Widget - * @param geometry the geometry to apply to this Plasma::Widget. - */ - virtual void setGeometry(const QRectF &geometry); - - /** - * This method is used to notify any containing Plasma::Layout that it should - * reset its geometry. - */ - // NOTE: this is a completely broken concept -MB - Q_INVOKABLE void updateGeometry(); - - /** - * Returns the recommended size for this widget. Note that this size is not - * necessarily only the size for the widget, but might also include margins etc. - * @return recommended size for this Plasma::Widget. - */ - virtual QSizeF sizeHint() const; - /** * @return the font currently set for this widget **/ QFont font() const; - /** - * Reimplemented from QGraphicsItem - * @return the bounding rectangle for this Plasma::Widget - */ - virtual QRectF boundingRect() const; - - /** - * Resizes this Plasma::Widget. - * @param size the new size of this Plasma::Widget. - */ - Q_INVOKABLE void resize(const QSizeF &size); - - /** - * Convenience method for resizing this Plasma::Widget - * @param width the new width. - * @param height the new height. - */ - Q_INVOKABLE void resize(qreal width, qreal height); - /** * @return this Plasma::Widget's parent, returns a null pointer if * none exist. @@ -310,9 +241,7 @@ protected: * @param widget the parent QWidget (most likely the Corona) */ virtual void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); - - QVariant itemChange(GraphicsItemChange change, const QVariant &value); - void managingLayoutChanged(); + virtual bool sceneEvent(QEvent *event); private: