fix video tuortial widget
This commit is contained in:
parent
461d2562ce
commit
2435f1cc6a
@ -21,11 +21,15 @@
|
||||
|
||||
#include <QDir>
|
||||
|
||||
#include <KDesktopFile>
|
||||
#include <KGlobalSettings>
|
||||
#include <KIO/CopyJob>
|
||||
#include <KIO/Job>
|
||||
#include <KRun>
|
||||
#include <KStandardDirs>
|
||||
|
||||
#include <Plasma/Package>
|
||||
|
||||
QScriptValue ScriptEnv::openUrl(QScriptContext *context, QScriptEngine *engine)
|
||||
{
|
||||
Q_UNUSED(engine)
|
||||
@ -87,6 +91,67 @@ QScriptValue ScriptEnv::getUrl(QScriptContext *context, QScriptEngine *engine)
|
||||
return engine->newQObject(job);
|
||||
}
|
||||
|
||||
QScriptValue ScriptEnv::download(QScriptContext *context, QScriptEngine *engine)
|
||||
{
|
||||
if (context->argumentCount() == 0) {
|
||||
return engine->undefinedValue();
|
||||
}
|
||||
|
||||
QScriptValue v = context->argument(0);
|
||||
KUrl url = v.isString() ? KUrl(v.toString()) : qscriptvalue_cast<KUrl>(v);
|
||||
|
||||
if (!url.isValid()) {
|
||||
return engine->undefinedValue();
|
||||
}
|
||||
|
||||
QString requestedFileName;
|
||||
if (context->argumentCount() > 1) {
|
||||
requestedFileName = context->argument(1).toString();
|
||||
}
|
||||
|
||||
ScriptEnv *env = ScriptEnv::findScriptEnv(engine);
|
||||
if (!env) {
|
||||
//kDebug() << "findScriptEnv failed";
|
||||
return engine->undefinedValue();
|
||||
}
|
||||
|
||||
QStringList protocols;
|
||||
protocols << "http" << "https" << "ftp" << "ftps";
|
||||
if (!protocols.contains(url.protocol())) {
|
||||
return engine->undefinedValue();
|
||||
}
|
||||
|
||||
QScriptContext *c = engine->currentContext();
|
||||
QString destination;
|
||||
while (c) {
|
||||
QScriptValue v = c->activationObject().property("__plasma_package");
|
||||
if (v.isVariant()) {
|
||||
KDesktopFile config(v.toVariant().value<Plasma::Package>().path() + "/metadata.desktop");
|
||||
KConfigGroup cg = config.desktopGroup();
|
||||
const QString pluginName = cg.readEntry("X-KDE-PluginInfo-Name", QString());
|
||||
destination = KGlobalSettings::downloadPath() + "Plasma/" + pluginName + '/';
|
||||
break;
|
||||
}
|
||||
|
||||
c = c->parentContext();
|
||||
}
|
||||
|
||||
if (destination.isEmpty()) {
|
||||
return engine->undefinedValue();
|
||||
}
|
||||
|
||||
requestedFileName.prepend(destination);
|
||||
QDir dir(requestedFileName);
|
||||
dir.mkpath(destination);
|
||||
if (!dir.absolutePath().startsWith(destination)) {
|
||||
requestedFileName = destination;
|
||||
}
|
||||
|
||||
//TODO: allow showing desktop progress info?
|
||||
KIO::CopyJob *job = KIO::copy(url, KUrl(requestedFileName), KIO::HideProgressInfo);
|
||||
return engine->newQObject(job);
|
||||
}
|
||||
|
||||
QScriptValue ScriptEnv::userDataPath(QScriptContext *context, QScriptEngine *engine)
|
||||
{
|
||||
Q_UNUSED(engine)
|
||||
|
@ -68,7 +68,6 @@ void ScriptEnv::setupGlobalObject()
|
||||
// property is hidden from scripts.
|
||||
global.setProperty("__plasma_scriptenv", m_engine->newQObject(this),
|
||||
QScriptValue::ReadOnly|QScriptValue::Undeletable|QScriptValue::SkipInEnumeration);
|
||||
|
||||
// Add utility functions
|
||||
#ifndef DECLARATIVE
|
||||
global.setProperty("print", m_engine->newFunction(ScriptEnv::print));
|
||||
@ -182,6 +181,9 @@ bool ScriptEnv::importBuiltinExtension(const QString &extension, QScriptValue &o
|
||||
obj.setProperty("userDataPath", m_engine->newFunction(ScriptEnv::userDataPath));
|
||||
obj.setProperty("runCommand", m_engine->newFunction(ScriptEnv::runCommand));
|
||||
return true;
|
||||
} else if ("download" == extension) {
|
||||
obj.setProperty("download", m_engine->newFunction(ScriptEnv::download));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -27,6 +27,11 @@
|
||||
|
||||
#include "authorization.h"
|
||||
|
||||
namespace Plasma
|
||||
{
|
||||
class Package;
|
||||
} // namespace Plasma
|
||||
|
||||
class ScriptEnv : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@ -87,6 +92,7 @@ private:
|
||||
static QScriptValue applicationExists(QScriptContext *context, QScriptEngine *engine);
|
||||
static QScriptValue openUrl(QScriptContext *context, QScriptEngine *engine);
|
||||
static QScriptValue getUrl(QScriptContext *context, QScriptEngine *engine);
|
||||
static QScriptValue download(QScriptContext *context, QScriptEngine *engine);
|
||||
static QScriptValue userDataPath(QScriptContext *context, QScriptEngine *engine);
|
||||
static QScriptValue listAddons(QScriptContext *context, QScriptEngine *engine);
|
||||
static QScriptValue loadAddon(QScriptContext *context, QScriptEngine *engine);
|
||||
|
@ -22,12 +22,14 @@
|
||||
#include "appletinterface.h"
|
||||
|
||||
#include <QAction>
|
||||
#include <QDir>
|
||||
#include <QFile>
|
||||
#include <QScriptEngine>
|
||||
#include <QSignalMapper>
|
||||
#include <QTimer>
|
||||
|
||||
#include <KDebug>
|
||||
#include <KGlobalSettings>
|
||||
#include <KIcon>
|
||||
#include <KService>
|
||||
#include <KServiceTypeTrader>
|
||||
@ -412,6 +414,23 @@ AppletInterface::ItemStatus AppletInterface::status() const
|
||||
return (AppletInterface::ItemStatus)((int)(applet()->status()));
|
||||
}
|
||||
|
||||
/*
|
||||
QString AppletInterface::downloadPath(const QString &file)
|
||||
{
|
||||
KDesktopFile config(v.toVariant().value<Plasma::Package>().path() + "/metadata.desktop");
|
||||
KConfigGroup cg = config.desktopGroup();
|
||||
const QString pluginName = cg.readEntry("X-KDE-PluginInfo-Name", QString());
|
||||
destination = KGlobalSettings::downloadPath() + "/Plasma/" + pluginName + '/';
|
||||
}
|
||||
*/
|
||||
|
||||
QStringList AppletInterface::downloadedFiles() const
|
||||
{
|
||||
const QString downloadDir = KGlobalSettings::downloadPath() + "/Plasma/" + applet()->pluginName();
|
||||
QDir dir(downloadDir);
|
||||
return dir.entryList(QDir::Files | QDir::NoSymLinks | QDir::Readable);
|
||||
}
|
||||
|
||||
void AppletInterface::gc()
|
||||
{
|
||||
QTimer::singleShot(0, m_appletScriptEngine, SLOT(collectGarbage()));
|
||||
|
@ -304,6 +304,9 @@ enum IntervalAlignment {
|
||||
void setStatus(const ItemStatus &status);
|
||||
ItemStatus status() const;
|
||||
|
||||
// Q_INVOKABLE QString downloadPath(const QString &file);
|
||||
Q_INVOKABLE QStringList downloadedFiles() const;
|
||||
|
||||
Q_SIGNALS:
|
||||
void releaseVisualFocus();
|
||||
void configNeedsSaving();
|
||||
|
@ -390,6 +390,10 @@ void DeclarativeAppletScript::setupObjects()
|
||||
|
||||
QScriptValue global = m_engine->globalObject();
|
||||
|
||||
QScriptValue v = m_engine->newVariant(QVariant::fromValue(*applet()->package()));
|
||||
global.setProperty("__plasma_package", v,
|
||||
QScriptValue::ReadOnly | QScriptValue::Undeletable | QScriptValue::SkipInEnumeration);
|
||||
|
||||
m_self = m_engine->newQObject(m_interface);
|
||||
m_self.setScope(global);
|
||||
global.setProperty("plasmoid", m_self);
|
||||
|
@ -510,6 +510,10 @@ void SimpleJavaScriptApplet::setupObjects()
|
||||
global.setProperty("AnimationGroup", m_engine->newFunction(SimpleJavaScriptApplet::animationGroup));
|
||||
global.setProperty("ParallelAnimationGroup", m_engine->newFunction(SimpleJavaScriptApplet::parallelAnimationGroup));
|
||||
|
||||
QScriptValue v = m_engine->newVariant(QVariant::fromValue(*applet()->package()));
|
||||
global.setProperty("__plasma_package", v,
|
||||
QScriptValue::ReadOnly | QScriptValue::Undeletable | QScriptValue::SkipInEnumeration);
|
||||
|
||||
// Bindings for data engine
|
||||
|
||||
bindI18N(m_engine);
|
||||
|
Loading…
x
Reference in New Issue
Block a user