de4fa09a6d
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.
199 lines
4.3 KiB
C++
199 lines
4.3 KiB
C++
/*
|
|
* Copyright 2007 by Aaron Seigo <aseigo@kde.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU Library General Public License as
|
|
* published by the Free Software Foundation; either version 2, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details
|
|
*
|
|
* You should have received a copy of the GNU Library General Public
|
|
* License along with this program; if not, write to the
|
|
* Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "scripting/appletscript.h"
|
|
|
|
#include "kconfig.h"
|
|
#include "kconfigdialog.h"
|
|
|
|
#include "applet.h"
|
|
#include "package.h"
|
|
#include "private/applet_p.h"
|
|
|
|
namespace Plasma
|
|
{
|
|
|
|
class AppletScriptPrivate
|
|
{
|
|
public:
|
|
Applet *applet;
|
|
};
|
|
|
|
AppletScript::AppletScript(QObject *parent)
|
|
: ScriptEngine(parent),
|
|
d(new AppletScriptPrivate)
|
|
{
|
|
d->applet = 0;
|
|
}
|
|
|
|
AppletScript::~AppletScript()
|
|
{
|
|
delete d;
|
|
}
|
|
|
|
void AppletScript::setApplet(Plasma::Applet *applet)
|
|
{
|
|
d->applet = applet;
|
|
}
|
|
|
|
Applet *AppletScript::applet() const
|
|
{
|
|
Q_ASSERT(d->applet);
|
|
return d->applet;
|
|
}
|
|
|
|
void AppletScript::paintInterface(QPainter *painter,
|
|
const QStyleOptionGraphicsItem *option,
|
|
const QRect &contentsRect)
|
|
{
|
|
Q_UNUSED(painter);
|
|
Q_UNUSED(option);
|
|
Q_UNUSED(contentsRect);
|
|
}
|
|
|
|
void AppletScript::constraintsEvent(Plasma::Constraints constraints)
|
|
{
|
|
Q_UNUSED(constraints);
|
|
}
|
|
|
|
QList<QAction*> AppletScript::contextualActions()
|
|
{
|
|
return QList<QAction*>();
|
|
}
|
|
|
|
void AppletScript::setHasConfigurationInterface(bool hasInterface)
|
|
{
|
|
if (applet()) {
|
|
applet()->setHasConfigurationInterface(hasInterface);
|
|
}
|
|
}
|
|
|
|
void AppletScript::setConfigurationRequired(bool req, const QString &reason)
|
|
{
|
|
if (applet()) {
|
|
applet()->setConfigurationRequired(req, reason);
|
|
}
|
|
}
|
|
|
|
void AppletScript::setLaunchErrorMessage(const QString &reason)
|
|
{
|
|
if (applet()) {
|
|
applet()->setLaunchErrorMessage(reason);
|
|
}
|
|
}
|
|
|
|
void AppletScript::configNeedsSaving() const
|
|
{
|
|
if (applet()) {
|
|
emit applet()->configNeedsSaving();
|
|
}
|
|
}
|
|
|
|
void AppletScript::showConfigurationInterface()
|
|
{
|
|
if (applet()) {
|
|
KConfigDialog *dialog = applet()->d->generateGenericConfigDialog();
|
|
applet()->d->addStandardConfigurationPages(dialog);
|
|
dialog->show();
|
|
}
|
|
}
|
|
|
|
KConfigDialog *AppletScript::standardConfigurationDialog()
|
|
{
|
|
if (applet()) {
|
|
return applet()->d->generateGenericConfigDialog();
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void AppletScript::addStandardConfigurationPages(KConfigDialog *dialog)
|
|
{
|
|
if (applet()) {
|
|
applet()->d->addStandardConfigurationPages(dialog);
|
|
}
|
|
}
|
|
|
|
void AppletScript::configChanged()
|
|
{
|
|
}
|
|
|
|
QString AppletScript::mainScript() const
|
|
{
|
|
Q_ASSERT(d->applet);
|
|
return d->applet->package().filePath("mainscript");
|
|
}
|
|
|
|
Package AppletScript::package() const
|
|
{
|
|
Q_ASSERT(d->applet);
|
|
return d->applet->package();
|
|
}
|
|
|
|
KPluginInfo AppletScript::description() const
|
|
{
|
|
Q_ASSERT(d->applet);
|
|
return d->applet->d->appletDescription;
|
|
}
|
|
|
|
bool AppletScript::drawWallpaper() const
|
|
{
|
|
Q_ASSERT(d->applet);
|
|
Plasma::Containment *cont = qobject_cast<Plasma::Containment *>(d->applet);
|
|
if (cont) {
|
|
return cont->drawWallpaper();
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
void AppletScript::setDrawWallpaper(bool drawWallpaper)
|
|
{
|
|
Q_ASSERT(d->applet);
|
|
Plasma::Containment *cont = qobject_cast<Plasma::Containment *>(d->applet);
|
|
if (cont) {
|
|
cont->setDrawWallpaper(drawWallpaper);
|
|
}
|
|
}
|
|
|
|
Containment::Type AppletScript::containmentType() const
|
|
{
|
|
Q_ASSERT(d->applet);
|
|
Plasma::Containment *cont = qobject_cast<Plasma::Containment *>(d->applet);
|
|
if (cont) {
|
|
return cont->containmentType();
|
|
} else {
|
|
return Containment::NoContainmentType;
|
|
}
|
|
}
|
|
|
|
void AppletScript::setContainmentType(Containment::Type type)
|
|
{
|
|
Q_ASSERT(d->applet);
|
|
Plasma::Containment *cont = qobject_cast<Plasma::Containment *>(d->applet);
|
|
if (cont) {
|
|
cont->setContainmentType(type);
|
|
}
|
|
}
|
|
|
|
} // Plasma namespace
|
|
|
|
|
|
#include "moc_appletscript.cpp"
|