[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.4/kdebase/runtime/plasma/scriptengines/javascript
From: Aaron J. Seigo <aseigo () kde ! org>
Date: 2010-01-20 19:08:45
Message-ID: 1264014525.869987.20373.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1077723 by aseigo:
extenders
M +5 -1 simplebindings/appletinterface.cpp
M +3 -0 simplebindings/appletinterface.h
M +29 -9 simplebindings/qscriptbookkeeping.cpp
M +35 -1 simplejavascriptapplet.cpp
M +7 -0 simplejavascriptapplet.h
--- branches/KDE/4.4/kdebase/runtime/plasma/scriptengines/javascript/simplebindings/appletinterface.cpp \
#1077722:1077723 @@ -32,7 +32,6 @@
#include <Plasma/Plasma>
#include <Plasma/Applet>
#include <Plasma/Context>
-#include <Plasma/DataEngine>
#include <Plasma/Package>
AppletInterface::AppletInterface(SimpleJavaScriptApplet *parent)
@@ -365,6 +364,11 @@
return 0;
}
+Plasma::Extender *AppletInterface::extender() const
+{
+ return m_appletScriptEngine->extender();
+}
+
void AppletInterface::gc()
{
QTimer::singleShot(0, m_appletScriptEngine, SLOT(collectGarbage()));
--- branches/KDE/4.4/kdebase/runtime/plasma/scriptengines/javascript/simplebindings/appletinterface.h \
#1077722:1077723 @@ -41,6 +41,7 @@
namespace Plasma
{
class ConfigLoader;
+ class Extender;
} // namespace Plasa
class AppletInterface : public QObject
@@ -233,6 +234,8 @@
Q_INVOKABLE void debug(const QString &msg);
Q_INVOKABLE QObject *findChild(const QString &name) const;
+ Q_INVOKABLE Plasma::Extender *extender() const;
+
Plasma::DataEngine *dataEngine(const QString &name);
const Plasma::Package *package() const;
--- branches/KDE/4.4/kdebase/runtime/plasma/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp \
#1077722:1077723 @@ -20,26 +20,31 @@
#include <QGraphicsWidget>
#include <QScriptEngine>
+#include <KConfigGroup>
+#include <KIO/Job>
+
#include <Plasma/Applet>
#include <Plasma/Animation>
+#include <Plasma/Extender>
#include <Plasma/VideoWidget>
-#include <KConfigGroup>
-#include <KIO/Job>
-
#include "appletinterface.h"
#include "dataengine.h"
#include "variant.h"
//Q_DECLARE_METATYPE(SimpleJavaScriptApplet*)
-Q_DECLARE_METATYPE(AppletInterface*)
-Q_DECLARE_METATYPE(Plasma::Applet*)
Q_DECLARE_METATYPE(QGraphicsWidget*)
Q_DECLARE_METATYPE(QGraphicsLayout*)
+
Q_DECLARE_METATYPE(KConfigGroup)
+
Q_DECLARE_METATYPE(Plasma::Animation*)
+Q_DECLARE_METATYPE(Plasma::Applet*)
+Q_DECLARE_METATYPE(Plasma::Extender*)
Q_DECLARE_METATYPE(Plasma::VideoWidget::Controls)
+Q_DECLARE_METATYPE(AppletInterface*)
+
//Q_SCRIPT_DECLARE_QMETAOBJECT(AppletInterface, SimpleJavaScriptApplet*)
@@ -168,13 +173,28 @@
anim = static_cast<QGraphicsWidget *>(obj);
}
+typedef Plasma::Extender *ExtenderPtr;
+QScriptValue qScriptValueFromExtender(QScriptEngine *engine, const ExtenderPtr \
&extender) +{
+ return engine->newQObject(const_cast<Plasma::Extender *>(extender), \
QScriptEngine::AutoOwnership, QScriptEngine::PreferExistingWrapperObject); +}
+
+void extenderFromQScriptValue(const QScriptValue &scriptValue, ExtenderPtr \
&extender) +{
+ QObject *obj = scriptValue.toQObject();
+ extender = static_cast<Plasma::Extender *>(obj);
+}
+
void registerSimpleAppletMetaTypes(QScriptEngine *engine)
{
- qScriptRegisterMetaType<Plasma::DataEngine::Data>(engine, qScriptValueFromData, \
0, QScriptValue()); + qScriptRegisterMetaType<QGraphicsWidget*>(engine, \
qScriptValueFromQGraphicsWidget, qGraphicsWidgetFromQScriptValue); +
qScriptRegisterMetaType<KConfigGroup>(engine, qScriptValueFromKConfigGroup, \
kConfigGroupFromScriptValue, QScriptValue());
- qScriptRegisterMetaType<Plasma::VideoWidget::Controls>(engine, \
qScriptValueFromControls, controlsFromScriptValue, QScriptValue());
qScriptRegisterMetaType<KJob *>(engine, qScriptValueFromKJob, \
qKJobFromQScriptValue);
qScriptRegisterMetaType<KIO::Job *>(engine, qScriptValueFromKIOJob, \
qKIOJobFromQScriptValue);
- qScriptRegisterMetaType<Plasma::Animation*>(engine, qScriptValueFromAnimation, \
abstractAnimationFromQScriptValue);
- qScriptRegisterMetaType<QGraphicsWidget*>(engine, \
qScriptValueFromQGraphicsWidget, qGraphicsWidgetFromQScriptValue); +
+ qScriptRegisterMetaType<Plasma::Animation *>(engine, qScriptValueFromAnimation, \
abstractAnimationFromQScriptValue); + \
qScriptRegisterMetaType<Plasma::DataEngine::Data>(engine, qScriptValueFromData, 0, \
QScriptValue()); + qScriptRegisterMetaType<Plasma::Extender *>(engine, \
qScriptValueFromExtender , extenderFromQScriptValue); + \
qScriptRegisterMetaType<Plasma::VideoWidget::Controls>(engine, \
qScriptValueFromControls, controlsFromScriptValue, QScriptValue()); }
--- branches/KDE/4.4/kdebase/runtime/plasma/scriptengines/javascript/simplejavascriptapplet.cpp \
#1077722:1077723 @@ -42,10 +42,12 @@
#include <Plasma/Animation>
#include <Plasma/Applet>
-#include <Plasma/Svg>
+#include <Plasma/Extender>
+#include <Plasma/ExtenderItem>
#include <Plasma/FrameSvg>
#include <Plasma/Package>
#include <Plasma/PopupApplet>
+#include <Plasma/Svg>
#include <Plasma/VideoWidget>
#include "simplebindings/animationgroup.h"
@@ -315,6 +317,8 @@
bool SimpleJavaScriptApplet::init()
{
+ connect(applet(), SIGNAL(extenderItemRestored(Plasma::ExtenderItem*)),
+ this, SLOT(extenderItemRestored(Plasma::ExtenderItem*)));
setupObjects();
if (!importExtensions()) {
@@ -327,6 +331,13 @@
return include(mainScript());
}
+void SimpleJavaScriptApplet::extenderItemRestored(Plasma::ExtenderItem* item)
+{
+ QScriptValueList args;
+ args << m_engine->newQObject(item, QScriptEngine::AutoOwnership, \
QScriptEngine::PreferExistingWrapperObject); + callFunction("initExtenderItem", \
args); +}
+
QScriptValue SimpleJavaScriptApplet::runApplication(QScriptContext *context, \
QScriptEngine *engine) {
Q_UNUSED(engine)
@@ -589,6 +600,7 @@
global.setProperty("PlasmaFrameSvg", \
m_engine->newFunction(SimpleJavaScriptApplet::newPlasmaFrameSvg));
global.setProperty("Svg", \
m_engine->newFunction(SimpleJavaScriptApplet::newPlasmaSvg));
global.setProperty("FrameSvg", \
m_engine->newFunction(SimpleJavaScriptApplet::newPlasmaFrameSvg)); + \
global.setProperty("ExtenderItem", \
m_engine->newFunction(SimpleJavaScriptApplet::newPlasmaExtenderItem));
registerSimpleAppletMetaTypes(m_engine);
installWidgets(m_engine);
@@ -774,6 +786,28 @@
return fun;
}
+QScriptValue SimpleJavaScriptApplet::newPlasmaExtenderItem(QScriptContext *context, \
QScriptEngine *engine) +{
+ Plasma::Extender *extender = 0;
+ if (context->argumentCount() > 0) {
+ extender = qobject_cast<Plasma::Extender \
*>(context->argument(0).toQObject()); + }
+
+ if (!extender) {
+ AppletInterface *interface = extractAppletInterface(engine);
+ if (!interface) {
+ engine->undefinedValue();
+ }
+
+ extender = interface->extender();
+ }
+
+ Plasma::ExtenderItem *extenderItem = new Plasma::ExtenderItem(extender);
+ QScriptValue fun = engine->newQObject(extenderItem);
+ registerEnums(engine, fun, *extenderItem->metaObject());
+ return fun;
+}
+
QScriptValue SimpleJavaScriptApplet::widgetAdjustSize(QScriptContext *context, \
QScriptEngine *engine) {
QGraphicsWidget *widget = \
qobject_cast<QGraphicsWidget*>(context->thisObject().toQObject());
--- branches/KDE/4.4/kdebase/runtime/plasma/scriptengines/javascript/simplejavascriptapplet.h \
#1077722:1077723 @@ -32,6 +32,11 @@
class AppletInterface;
+namespace Plasma
+{
+ class ExtenderItem;
+} // namespace Plasma
+
class SimpleJavaScriptApplet : public Plasma::AppletScript
{
Q_OBJECT
@@ -63,6 +68,7 @@
void configChanged();
void executeAction(const QString &name);
void collectGarbage();
+ void extenderItemRestored(Plasma::ExtenderItem* item);
private:
void registerGetUrl();
@@ -85,6 +91,7 @@
static QScriptValue loadui(QScriptContext *context, QScriptEngine *engine);
static QScriptValue newPlasmaSvg(QScriptContext *context, QScriptEngine \
*engine);
static QScriptValue newPlasmaFrameSvg(QScriptContext *context, QScriptEngine \
*engine); + static QScriptValue newPlasmaExtenderItem(QScriptContext *context, \
QScriptEngine *engine);
void installWidgets(QScriptEngine *engine);
static QScriptValue createWidget(QScriptContext *context, QScriptEngine \
*engine);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic