From 15cdbe46078d46e911c09efa9dafeec89fd99a02 Mon Sep 17 00:00:00 2001 From: "Aaron J. Seigo" Date: Wed, 29 Apr 2009 16:55:21 +0000 Subject: [PATCH] implement the rest of the linear layout api svn path=/trunk/KDE/kdebase/workspace/plasma/scriptengines/javascript/; revision=961204 --- scriptengines/javascript/appletinterface.h | 10 +++ .../javascript/qtgui/linearlayout.cpp | 68 +++++++++++++++---- 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/scriptengines/javascript/appletinterface.h b/scriptengines/javascript/appletinterface.h index 060b8fb2b..88d5839a6 100644 --- a/scriptengines/javascript/appletinterface.h +++ b/scriptengines/javascript/appletinterface.h @@ -45,6 +45,7 @@ class AppletInterface : public QObject Q_ENUMS(Location) Q_ENUMS(AspectRatioMode) Q_ENUMS(QtOrientation) + Q_ENUMS(QtAlignment) Q_PROPERTY(QString activeConfig WRITE setActiveConfig READ activeConfig) public: @@ -100,6 +101,15 @@ enum QtOrientation { QtVertical = Qt::Vertical }; +enum QtAlignment { + QtAlignLeft = 0x0001, + QtAlignRight = 0x0002, + QtAlignHCenter = 0x0004, + QtAlignJustify = 0x0005, + QtAlignTop = 0x0020, + QtAlignBottom = 0x0020, + QtAlignVCenter = 0x0080 +}; //------------------------------------------------------------------- Q_INVOKABLE FormFactor formFactor(); diff --git a/scriptengines/javascript/qtgui/linearlayout.cpp b/scriptengines/javascript/qtgui/linearlayout.cpp index 7408c2c97..523511fad 100644 --- a/scriptengines/javascript/qtgui/linearlayout.cpp +++ b/scriptengines/javascript/qtgui/linearlayout.cpp @@ -31,6 +31,7 @@ Q_DECLARE_METATYPE(QScript::Pointer::wrapped_pointer_type) Q_DECLARE_METATYPE(QGraphicsWidget*) Q_DECLARE_METATYPE(QGraphicsGridLayout*) +Q_DECLARE_METATYPE(QGraphicsLayoutItem*) DECLARE_POINTER_METATYPE(QGraphicsLinearLayout) DECLARE_VOID_NUMBER_METHOD(QGraphicsLinearLayout, removeAt) @@ -42,19 +43,19 @@ DECLARE_NUMBER_GET_SET_METHODS(QGraphicsLinearLayout, spacing, setSpacing) ///////////////////////////////////////////////////////////// -QGraphicsLayoutItem *layoutItem(QScriptContext *ctx, int index) +QGraphicsLayoutItem *layoutItem(QScriptContext *ctx, int index = 0) { - QGraphicsLayoutItem *item = qscriptvalue_cast(ctx->argument(0)); + QGraphicsLayoutItem *item = qscriptvalue_cast(ctx->argument(index)); if (!item) { - item = qscriptvalue_cast(ctx->argument(0)); + item = qscriptvalue_cast(ctx->argument(index)); } if (!item) { - item = qscriptvalue_cast(ctx->argument(0)); + item = qscriptvalue_cast(ctx->argument(index)); } - QObject *appletObject = ctx->argument(0).toQObject(); + QObject *appletObject = ctx->argument(index).toQObject(); if (appletObject) { AppletInterface *interface = qobject_cast(appletObject); if (interface) { @@ -71,7 +72,7 @@ static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng) return ctx->throwError(i18n("LinearLayout requires a parent")); } - QGraphicsLayoutItem *parent = layoutItem(ctx, 0); + QGraphicsLayoutItem *parent = layoutItem(ctx); if (!parent) { return ctx->throwError(i18n("The parent must be a QGraphicsLayoutItem")); @@ -89,16 +90,52 @@ BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, setOrientation) { return eng->undefinedValue(); } END_DECLARE_METHOD -/* -void insertItem(int index, QGraphicsLayoutItem * item) -void removeItem(QGraphicsLayoutItem * item) +BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, setAlignment) { + QGraphicsLayoutItem *item = layoutItem(ctx); -void setAlignment(QGraphicsLayoutItem * item, Qt::Alignment alignment) -void setStretchFactor(QGraphicsLayoutItem * item, int stretch) -*/ + if (!item) { + return eng->undefinedValue(); + } + + self->setAlignment(item, static_cast(ctx->argument(1).toInt32())); + return eng->undefinedValue(); +} END_DECLARE_METHOD + +BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, insertItem) { + QGraphicsLayoutItem *item = layoutItem(ctx, 1); + + if (!item) { + return eng->undefinedValue(); + } + + self->insertItem(ctx->argument(0).toInt32(), item); + return eng->undefinedValue(); +} END_DECLARE_METHOD + +BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, removeItem) { + QGraphicsLayoutItem *item = layoutItem(ctx); + + if (!item) { + return eng->undefinedValue(); + } + + self->removeItem(item); + return eng->undefinedValue(); +} END_DECLARE_METHOD + +BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, setStretchFactor) { + QGraphicsLayoutItem *item = ctx->argument(0).toVariant().value(); + + if (!item) { + return eng->undefinedValue(); + } + + self->setStretchFactor(item, static_cast(ctx->argument(1).toInt32())); + return eng->undefinedValue(); +} END_DECLARE_METHOD BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, addItem) { - QGraphicsLayoutItem *item = layoutItem(ctx, 0); + QGraphicsLayoutItem *item = layoutItem(ctx); if (!item) { return ctx->throwError(QScriptContext::TypeError, "QGraphicsLinearLayout.prototype.addItem: argument is not a GraphicsLayoutItem"); @@ -127,13 +164,16 @@ QScriptValue constructLinearLayoutClass(QScriptEngine *eng) QScriptValue proto = QScript::wrapPointer(eng, new QGraphicsLinearLayout(), QScript::UserOwnership); ADD_GET_SET_METHODS(proto, spacing, setSpacing); ADD_GET_SET_METHODS(proto, orientation, setOrientation); - //ADD_GET_METHOD(proto, y); ADD_METHOD(proto, removeAt); ADD_METHOD(proto, addStretch); + ADD_METHOD(proto, setStretchFactor); + ADD_METHOD(proto, setAlignment); ADD_METHOD(proto, insertStretch); ADD_METHOD(proto, setItemSpacing); ADD_METHOD(proto, setContentsMargins); ADD_METHOD(proto, addItem); + ADD_METHOD(proto, removeItem); + ADD_METHOD(proto, insertItem); ADD_METHOD(proto, toString); QScript::registerPointerMetaType(eng, proto);