implement package support
svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=796112
This commit is contained in:
parent
99c036a212
commit
40866fc443
@ -25,8 +25,10 @@
|
|||||||
#include <KDebug>
|
#include <KDebug>
|
||||||
#include <KPluginInfo>
|
#include <KPluginInfo>
|
||||||
#include <KServiceTypeTrader>
|
#include <KServiceTypeTrader>
|
||||||
|
#include <KStandardDirs>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
|
#include "package.h"
|
||||||
#include "scripting/runnerscript.h"
|
#include "scripting/runnerscript.h"
|
||||||
#include "searchcontext.h"
|
#include "searchcontext.h"
|
||||||
|
|
||||||
@ -35,33 +37,31 @@ namespace Plasma
|
|||||||
|
|
||||||
class AbstractRunner::Private
|
class AbstractRunner::Private
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool hasMatchOptions;
|
|
||||||
bool hasConfig;
|
|
||||||
Priority priority;
|
|
||||||
Speed speed;
|
|
||||||
RunnerScript* script;
|
|
||||||
KPluginInfo runnerDescription;
|
|
||||||
AbstractRunner* runner;
|
|
||||||
QTime runtime;
|
|
||||||
int fastRuns;
|
|
||||||
|
|
||||||
Private(AbstractRunner* r, KService::Ptr service)
|
Private(AbstractRunner* r, KService::Ptr service)
|
||||||
: priority(NormalPriority),
|
: priority(NormalPriority),
|
||||||
speed(NormalSpeed),
|
speed(NormalSpeed),
|
||||||
script(0),
|
script(0),
|
||||||
runnerDescription(service),
|
runnerDescription(service),
|
||||||
runner(r),
|
runner(r),
|
||||||
fastRuns(0)
|
fastRuns(0),
|
||||||
|
package(0)
|
||||||
{
|
{
|
||||||
if (runnerDescription.isValid()) {
|
if (runnerDescription.isValid()) {
|
||||||
QString language = runnerDescription.property("X-Plasma-Language").toString();
|
const QString language = runnerDescription.property("X-Plasma-Language").toString();
|
||||||
|
|
||||||
if (!language.isEmpty()) {
|
if (!language.isEmpty()) {
|
||||||
|
const QString path = KStandardDirs::locate("data",
|
||||||
|
"plasma/runners/" + runnerDescription.pluginName() + "/");
|
||||||
|
PackageStructure::Ptr structure = Plasma::packageStructure(language, Plasma::RunnerComponent);
|
||||||
|
structure->setPath(path);
|
||||||
|
package = new Package(path, structure);
|
||||||
|
|
||||||
script = Plasma::loadScriptEngine(language, runner);
|
script = Plasma::loadScriptEngine(language, runner);
|
||||||
if (!script) {
|
if (!script) {
|
||||||
kDebug() << "Could not create a" << language << "ScriptEngine for the"
|
kDebug() << "Could not create a" << language << "ScriptEngine for the"
|
||||||
<< runnerDescription.name() << "Runner.";
|
<< runnerDescription.name() << "Runner.";
|
||||||
|
delete package;
|
||||||
|
package = 0;
|
||||||
} else {
|
} else {
|
||||||
QTimer::singleShot(0, runner, SLOT(init()));
|
QTimer::singleShot(0, runner, SLOT(init()));
|
||||||
}
|
}
|
||||||
@ -69,14 +69,25 @@ class AbstractRunner::Private
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool hasMatchOptions;
|
||||||
|
bool hasConfig;
|
||||||
|
Priority priority;
|
||||||
|
Speed speed;
|
||||||
|
RunnerScript* script;
|
||||||
|
KPluginInfo runnerDescription;
|
||||||
|
AbstractRunner* runner;
|
||||||
|
QTime runtime;
|
||||||
|
int fastRuns;
|
||||||
|
Package *package;
|
||||||
|
|
||||||
static QMutex bigLock;
|
static QMutex bigLock;
|
||||||
};
|
};
|
||||||
|
|
||||||
QMutex AbstractRunner::Private::bigLock;
|
QMutex AbstractRunner::Private::bigLock;
|
||||||
|
|
||||||
AbstractRunner::AbstractRunner(QObject* parent, const QString& serviceId)
|
AbstractRunner::AbstractRunner(QObject* parent, const QString& serviceId)
|
||||||
: QObject(parent),
|
: QObject(parent),
|
||||||
d(new Private(this, KService::serviceByStorageId(serviceId)))
|
d(new Private(this, KService::serviceByStorageId(serviceId)))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,6 +232,11 @@ QString AbstractRunner::runnerName() const
|
|||||||
return d->runnerDescription.property("X-Plasma-RunnerName").toString();
|
return d->runnerDescription.property("X-Plasma-RunnerName").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Package* AbstractRunner::package() const
|
||||||
|
{
|
||||||
|
return d->package;
|
||||||
|
}
|
||||||
|
|
||||||
void AbstractRunner::init()
|
void AbstractRunner::init()
|
||||||
{
|
{
|
||||||
if (d->script) {
|
if (d->script) {
|
||||||
|
@ -36,6 +36,7 @@ class KCompletion;
|
|||||||
namespace Plasma
|
namespace Plasma
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class Package;
|
||||||
class RunnerScript;
|
class RunnerScript;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -168,6 +169,14 @@ class PLASMA_EXPORT AbstractRunner : public QObject
|
|||||||
*/
|
*/
|
||||||
QString runnerName() const;
|
QString runnerName() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accessor for the associated Package object if any.
|
||||||
|
* Generally, only Plasmoids come in a Package.
|
||||||
|
*
|
||||||
|
* @return the Package object, or 0 if none
|
||||||
|
**/
|
||||||
|
const Package* package() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
* Sets whether or not the the runner has options for matches
|
* Sets whether or not the the runner has options for matches
|
||||||
|
Loading…
Reference in New Issue
Block a user