allow loading applets from packages directly
svn path=/trunk/KDE/kdelibs/; revision=959317
This commit is contained in:
parent
1ceabde6ea
commit
d4c7994472
35
applet.cpp
35
applet.cpp
@ -94,9 +94,7 @@
|
|||||||
namespace Plasma
|
namespace Plasma
|
||||||
{
|
{
|
||||||
|
|
||||||
Applet::Applet(QGraphicsItem *parent,
|
Applet::Applet(QGraphicsItem *parent, const QString &serviceID, uint appletId)
|
||||||
const QString &serviceID,
|
|
||||||
uint appletId)
|
|
||||||
: QGraphicsWidget(parent),
|
: QGraphicsWidget(parent),
|
||||||
d(new AppletPrivate(KService::serviceByStorageId(serviceID), appletId, this))
|
d(new AppletPrivate(KService::serviceByStorageId(serviceID), appletId, this))
|
||||||
{
|
{
|
||||||
@ -1733,6 +1731,23 @@ QStringList Applet::listCategories(const QString &parentApp, bool visibleOnly)
|
|||||||
return categories;
|
return categories;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Applet::Applet(const QString &packagePath, uint appletId, const QVariantList &args)
|
||||||
|
: QGraphicsWidget(0),
|
||||||
|
d(new AppletPrivate(KService::Ptr(new KService(packagePath + "/metadata.desktop")), appletId, this))
|
||||||
|
{
|
||||||
|
Q_UNUSED(args) // FIXME?
|
||||||
|
d->init(packagePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
Applet *Applet::loadPlasmoid(const QString &path, uint appletId, const QVariantList &args)
|
||||||
|
{
|
||||||
|
if (QFile::exists(path + "/metadata.desktop")) {
|
||||||
|
return new Applet(path, appletId, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
Applet *Applet::load(const QString &appletName, uint appletId, const QVariantList &args)
|
Applet *Applet::load(const QString &appletName, uint appletId, const QVariantList &args)
|
||||||
{
|
{
|
||||||
if (appletName.isEmpty()) {
|
if (appletName.isEmpty()) {
|
||||||
@ -2058,7 +2073,7 @@ AppletPrivate::~AppletPrivate()
|
|||||||
mainConfig = 0;
|
mainConfig = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppletPrivate::init()
|
void AppletPrivate::init(const QString &packagePath)
|
||||||
{
|
{
|
||||||
// WARNING: do not access config() OR globalConfig() in this method!
|
// WARNING: do not access config() OR globalConfig() in this method!
|
||||||
// that requires a scene, which is not available at this point
|
// that requires a scene, which is not available at this point
|
||||||
@ -2082,9 +2097,10 @@ void AppletPrivate::init()
|
|||||||
// we have a scripted plasmoid
|
// we have a scripted plasmoid
|
||||||
if (!api.isEmpty()) {
|
if (!api.isEmpty()) {
|
||||||
// find where the Package is
|
// find where the Package is
|
||||||
QString path = KStandardDirs::locate(
|
QString path = packagePath;
|
||||||
"data",
|
if (path.isEmpty()) {
|
||||||
"plasma/plasmoids/" + appletDescription.pluginName() + '/');
|
KStandardDirs::locate("data", "plasma/plasmoids/" + appletDescription.pluginName() + '/');
|
||||||
|
}
|
||||||
|
|
||||||
if (path.isEmpty()) {
|
if (path.isEmpty()) {
|
||||||
q->setFailedToLaunch(
|
q->setFailedToLaunch(
|
||||||
@ -2095,8 +2111,7 @@ void AppletPrivate::init()
|
|||||||
} else {
|
} else {
|
||||||
// create the package and see if we have something real
|
// create the package and see if we have something real
|
||||||
//kDebug() << "trying for" << path;
|
//kDebug() << "trying for" << path;
|
||||||
PackageStructure::Ptr structure =
|
PackageStructure::Ptr structure = Plasma::packageStructure(api, Plasma::AppletComponent);
|
||||||
Plasma::packageStructure(api, Plasma::AppletComponent);
|
|
||||||
structure->setPath(path);
|
structure->setPath(path);
|
||||||
package = new Package(path, structure);
|
package = new Package(path, structure);
|
||||||
|
|
||||||
@ -2129,9 +2144,7 @@ void AppletPrivate::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
q->setBackgroundHints(Applet::DefaultBackground);
|
q->setBackgroundHints(Applet::DefaultBackground);
|
||||||
|
|
||||||
q->setHasConfigurationInterface(true);
|
q->setHasConfigurationInterface(true);
|
||||||
|
|
||||||
QObject::connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()), q, SLOT(themeChanged()));
|
QObject::connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()), q, SLOT(themeChanged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
32
applet.h
32
applet.h
@ -310,6 +310,23 @@ class PLASMA_EXPORT Applet : public QGraphicsWidget
|
|||||||
static QStringList listCategories(const QString &parentApp = QString(),
|
static QStringList listCategories(const QString &parentApp = QString(),
|
||||||
bool visibleOnly = true);
|
bool visibleOnly = true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to load an apppet from a package
|
||||||
|
*
|
||||||
|
* Returns a pointer to the applet if successful.
|
||||||
|
* The caller takes responsibility for the applet, including
|
||||||
|
* deleting it when no longer needed.
|
||||||
|
*
|
||||||
|
* @param path the path to the package
|
||||||
|
* @param appletId unique ID to assign the applet, or zero to have one
|
||||||
|
* assigned automatically.
|
||||||
|
* @param args to send the applet extra arguments
|
||||||
|
* @return a pointer to the loaded applet, or 0 on load failure
|
||||||
|
* @since 4.3
|
||||||
|
**/
|
||||||
|
static Applet *loadPlasmoid(const QString &path, uint appletId = 0,
|
||||||
|
const QVariantList &args = QVariantList());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempts to load an applet
|
* Attempts to load an applet
|
||||||
*
|
*
|
||||||
@ -567,13 +584,12 @@ class PLASMA_EXPORT Applet : public QGraphicsWidget
|
|||||||
* instances of the same Applet type
|
* instances of the same Applet type
|
||||||
* @param args a list of strings containing two entries: the service id
|
* @param args a list of strings containing two entries: the service id
|
||||||
* and the applet id
|
* and the applet id
|
||||||
* @since KDE4.3
|
* @since KDE4.3
|
||||||
*/
|
*/
|
||||||
explicit Applet(QGraphicsItem *parent,
|
explicit Applet(QGraphicsItem *parent,
|
||||||
const QString &serviceId,
|
const QString &serviceId,
|
||||||
uint appletId,
|
uint appletId,
|
||||||
const QVariantList &args
|
const QVariantList &args);
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -907,6 +923,16 @@ class PLASMA_EXPORT Applet : public QGraphicsWidget
|
|||||||
void timerEvent (QTimerEvent *event);
|
void timerEvent (QTimerEvent *event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
/**
|
||||||
|
* @internal This constructor is to be used with the Package loading system.
|
||||||
|
*
|
||||||
|
* @param parent a QObject parent; you probably want to pass in 0
|
||||||
|
* @param args a list of strings containing two entries: the service id
|
||||||
|
* and the applet id
|
||||||
|
* @since 4.3
|
||||||
|
*/
|
||||||
|
Applet(const QString &packagePath, uint appletId, const QVariantList &args);
|
||||||
|
|
||||||
Q_PRIVATE_SLOT(d, void setFocus())
|
Q_PRIVATE_SLOT(d, void setFocus())
|
||||||
Q_PRIVATE_SLOT(d, void checkImmutability())
|
Q_PRIVATE_SLOT(d, void checkImmutability())
|
||||||
Q_PRIVATE_SLOT(d, void themeChanged())
|
Q_PRIVATE_SLOT(d, void themeChanged())
|
||||||
|
@ -62,7 +62,7 @@ public:
|
|||||||
AppletPrivate(KService::Ptr service, int uniqueID, Applet *applet);
|
AppletPrivate(KService::Ptr service, int uniqueID, Applet *applet);
|
||||||
~AppletPrivate();
|
~AppletPrivate();
|
||||||
|
|
||||||
void init();
|
void init(const QString &packagePath = QString());
|
||||||
|
|
||||||
// put all setup routines for script here. at this point we can assume that
|
// put all setup routines for script here. at this point we can assume that
|
||||||
// package exists and that we have a script engin
|
// package exists and that we have a script engin
|
||||||
|
Loading…
Reference in New Issue
Block a user