* load packages properly
* handle scriptegines properly * add a setContentSize so applets can use that and not get screwed by the borders svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=743089
This commit is contained in:
parent
8bcd5a7a04
commit
5b65d5c54c
50
applet.cpp
50
applet.cpp
@ -128,14 +128,15 @@ public:
|
|||||||
if (!language.isEmpty()) {
|
if (!language.isEmpty()) {
|
||||||
// find where the Package is
|
// find where the Package is
|
||||||
QString path = KStandardDirs::locate("appdata",
|
QString path = KStandardDirs::locate("appdata",
|
||||||
"plasmoids/" +
|
"plasmoids/" + appletDescription.pluginName() + '/');
|
||||||
appletDescription.pluginName());
|
|
||||||
|
|
||||||
if (!path.isEmpty()) {
|
if (path.isEmpty()) {
|
||||||
|
applet->setFailedToLaunch(true, i18n("Could not locate the %1 package required for the %2 widget.",
|
||||||
|
appletDescription.pluginName(), appletDescription.name()));
|
||||||
|
} else {
|
||||||
// create the package and see if we have something real
|
// create the package and see if we have something real
|
||||||
package = new Package(path,
|
//kDebug() << "trying for" << path;
|
||||||
appletDescription.pluginName(),
|
package = new Package(path, PlasmoidStructure());
|
||||||
PlasmoidStructure());
|
|
||||||
if (package->isValid()) {
|
if (package->isValid()) {
|
||||||
// now we try and set up the script engine.
|
// now we try and set up the script engine.
|
||||||
// it will be parented to this applet and so will get
|
// it will be parented to this applet and so will get
|
||||||
@ -145,15 +146,17 @@ public:
|
|||||||
if (!scriptEngine) {
|
if (!scriptEngine) {
|
||||||
delete package;
|
delete package;
|
||||||
package = 0;
|
package = 0;
|
||||||
|
applet->setFailedToLaunch(true, i18n("Could not create a %1 ScriptEngine for the %2 widget.",
|
||||||
|
language, appletDescription.name()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
applet->setFailedToLaunch(true, i18n("Could not open the %1 package required for the %2 widget.",
|
||||||
|
appletDescription.pluginName(), appletDescription.name()));
|
||||||
delete package;
|
delete package;
|
||||||
package = 0;
|
package = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!package) {
|
if (package) {
|
||||||
applet->setFailedToLaunch(true);
|
|
||||||
} else {
|
|
||||||
setupScriptSupport(applet);
|
setupScriptSupport(applet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -287,10 +290,6 @@ public:
|
|||||||
|
|
||||||
QSizeF contentSize(const Applet* q)
|
QSizeF contentSize(const Applet* q)
|
||||||
{
|
{
|
||||||
if (scriptEngine) {
|
|
||||||
return scriptEngine->size();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (failureText) {
|
if (failureText) {
|
||||||
return failureText->geometry().size();
|
return failureText->geometry().size();
|
||||||
}
|
}
|
||||||
@ -344,11 +343,10 @@ public:
|
|||||||
Q_ASSERT(asContainment);
|
Q_ASSERT(asContainment);
|
||||||
|
|
||||||
KConfigGroup containmentConfig;
|
KConfigGroup containmentConfig;
|
||||||
kDebug() << "got a corona, baby?" << (QObject*)asContainment->corona();
|
//kDebug() << "got a corona, baby?" << (QObject*)asContainment->corona();
|
||||||
if (asContainment->corona()) {
|
if (asContainment->corona()) {
|
||||||
containmentConfig = KConfigGroup(asContainment->corona()->config(), "Containments");
|
containmentConfig = KConfigGroup(asContainment->corona()->config(), "Containments");
|
||||||
} else {
|
} else {
|
||||||
kDebug() << kBacktrace();
|
|
||||||
containmentConfig = KConfigGroup(KGlobal::config(), "Containments");
|
containmentConfig = KConfigGroup(KGlobal::config(), "Containments");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -789,7 +787,7 @@ QSizeF Applet::sizeHint() const
|
|||||||
|
|
||||||
QList<QAction*> Applet::contextActions()
|
QList<QAction*> Applet::contextActions()
|
||||||
{
|
{
|
||||||
kDebug() << "empty actions";
|
kDebug() << "empty context actions";
|
||||||
return QList<QAction*>();
|
return QList<QAction*>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -916,6 +914,14 @@ QSizeF Applet::contentSize() const
|
|||||||
return geometry().size() - QSizeF(left + right, top + bottom);
|
return geometry().size() - QSizeF(left + right, top + bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Applet::setContentSize(const QSizeF &size)
|
||||||
|
{
|
||||||
|
int top, left, right, bottom;
|
||||||
|
d->getBorderSize(left, top, right, bottom);
|
||||||
|
|
||||||
|
resize(size + QSizeF(left + right, top + bottom));
|
||||||
|
}
|
||||||
|
|
||||||
QSizeF Applet::contentSizeHint() const
|
QSizeF Applet::contentSizeHint() const
|
||||||
{
|
{
|
||||||
if (layout()) {
|
if (layout()) {
|
||||||
@ -1137,14 +1143,22 @@ Applet* Applet::loadApplet(const QString& appletName, uint appletId, const QVari
|
|||||||
kDebug() << "hey! we got more than one! let's blindly take the first one";
|
kDebug() << "hey! we got more than one! let's blindly take the first one";
|
||||||
} */
|
} */
|
||||||
|
|
||||||
|
KService::Ptr offer = offers.first();
|
||||||
|
|
||||||
if (appletId == 0) {
|
if (appletId == 0) {
|
||||||
appletId = Private::nextId();
|
appletId = Private::nextId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!offer->property("X-Plasma-Language").toString().isEmpty()) {
|
||||||
|
kDebug() << "we have a script in the language of" << offer->property("X-Plasma-Language").toString();
|
||||||
|
Applet *applet = new Applet(0, offer->storageId(), appletId);
|
||||||
|
return applet;
|
||||||
|
}
|
||||||
|
|
||||||
QVariantList allArgs;
|
QVariantList allArgs;
|
||||||
allArgs << offers.first()->storageId() << appletId << args;
|
allArgs << offer->storageId() << appletId << args;
|
||||||
QString error;
|
QString error;
|
||||||
Applet* applet = offers.first()->createInstance<Plasma::Applet>(0, allArgs, &error);
|
Applet* applet = offer->createInstance<Plasma::Applet>(0, allArgs, &error);
|
||||||
|
|
||||||
if (!applet) {
|
if (!applet) {
|
||||||
kDebug() << "Couldn't load applet \"" << appletName << "\"! reason given: " << error;
|
kDebug() << "Couldn't load applet \"" << appletName << "\"! reason given: " << error;
|
||||||
|
11
applet.h
11
applet.h
@ -221,6 +221,17 @@ class PLASMA_EXPORT Applet : public Widget
|
|||||||
**/
|
**/
|
||||||
QSizeF contentSize() const;
|
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
|
||||||
|
*
|
||||||
|
* @arg size the new size of the contents area
|
||||||
|
*/
|
||||||
|
void setContentSize(const QSizeF &size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an ideal size for the applet's content.
|
* Returns an ideal size for the applet's content.
|
||||||
* Applets can re-implement this to provide a suitable size based
|
* Applets can re-implement this to provide a suitable size based
|
||||||
|
Loading…
Reference in New Issue
Block a user