setFailedToLaunch has a weird asymmetric api: now launchErrorMessage is a string property.
failedToLaunch remains and is internally set true the first time a message is set (is not posssible to set it back to false)
the message is in turn used by the scriptengine for the user visible error message.
It is done in 2 places:
if the applet package is invalid (applet not found) the message is created by the containment
if the applet package is valid, but there is a parse error in the qml file the error message is generated by the scriptengine of the applet itself.
I'm still really not happy about how the error ui is generated.
Any qml object that will be calles as an enum value, like Planar {} Application{}
etc will make enums inaccessible.
maintain them global, for retrocompatibility, but register them also under plasmoid
This adds the necessary bits, actions handling, showing / hiding of
toolbox and a hooks for config interface and add widgets.
The interesting bits:
Toolbox separate on the scene
For declarative containments, we add a declarativewidget on top of the
view which loads the "org.kde.toolbox" package. The toolbox can differ
per platform, layout of toolbox and containment can not "leak" into each
other.
ToolBox import
The most important and interesting bit is the list of actions the
ToolBox exposes, it's collected from corona, containment. The latter is
actually problematic, since we don't get access to the actions
internally provided by Containment
(ContainmentPrivate::addDefaultActions).
Containment::setToolBox(AbstractToolBox) being protected, we cannot
register our declarative ToolBoxProxy implementation to the containment,
so we have to wire up settings and addwidgets separately. Sorting of the
actions is "random", and expected to be done by the QML toolbox
implementation, based on objectName strings.
REVIEW:107232
Signal/slot signatures were wrong. Correctly forward the screenChanged
signal. This removes the following warning for me when running a QML
containment in plasmoidviewer:
Object::connect: No such slot ContainmentInterface::screenChanged() in
/home/sebas/kdesvn/src/kde/kde-runtime/plasma/scriptengines/javascript/plasmoid/appletinterface.cpp:605
REVIEW:106936
This adds a class to manipulate applets in more detail in context of
containments. The type will only be available from Containments, not
Applets or PopupApplets.
This binds the necessary functionality of Applets to build fully
features containments. The code has been moved from MobileComponents,
untangling another piece there and putting the functionality where
it belongs, into the specific component type bindings to allow this
functionality also outside of plasma-mobile and further reduce the
delta between the shell implementations.
REVIEW:106817
It was not previously possible to use KConfig etc. from declarative
applets, because the relevant qScriptRegisterMetaType functions were not
called. This fixes that by calling registerNonGuiMetaTypes from
registerSimpleAppletMetaTypes.