diff --git a/examples/applets/helloworld/contents/ui/main.qml b/examples/applets/helloworld/contents/ui/main.qml index 783d2328d..478a09953 100644 --- a/examples/applets/helloworld/contents/ui/main.qml +++ b/examples/applets/helloworld/contents/ui/main.qml @@ -31,4 +31,6 @@ Item { PlasmaComponents.Label { text: i18n("Hello world") } + + Plasmoid.associatedApplicationUrls: "file:///home" } diff --git a/src/scriptengines/qml/plasmoid/appletinterface.cpp b/src/scriptengines/qml/plasmoid/appletinterface.cpp index 78d6ad1b0..fd92f46e9 100644 --- a/src/scriptengines/qml/plasmoid/appletinterface.cpp +++ b/src/scriptengines/qml/plasmoid/appletinterface.cpp @@ -449,7 +449,12 @@ int AppletInterface::apiVersion() const void AppletInterface::setAssociatedApplication(const QString &string) { + if (applet()->associatedApplication() == string) { + return; + } + applet()->setAssociatedApplication(string); + emit associatedApplicationChanged(); } QString AppletInterface::associatedApplication() const @@ -457,6 +462,21 @@ QString AppletInterface::associatedApplication() const return applet()->associatedApplication(); } +void AppletInterface::setAssociatedApplicationUrls(const QList &urls) +{ + if (applet()->associatedApplicationUrls() == urls) { + return; + } + + applet()->setAssociatedApplicationUrls(urls); + emit associatedApplicationUrlsChanged(); +} + +QList AppletInterface::associatedApplicationUrls() const +{ + return applet()->associatedApplicationUrls(); +} + void AppletInterface::setStatus(const Plasma::Types::ItemStatus &status) { applet()->setStatus(status); diff --git a/src/scriptengines/qml/plasmoid/appletinterface.h b/src/scriptengines/qml/plasmoid/appletinterface.h index d174a73da..c84f06569 100644 --- a/src/scriptengines/qml/plasmoid/appletinterface.h +++ b/src/scriptengines/qml/plasmoid/appletinterface.h @@ -140,9 +140,13 @@ class AppletInterface : public PlasmaQuick::AppletQuickItem /** * Sets the associated application of this plasmoid, if the plasmoid is representing the "compact" view for some application or for some document type. - * TODO: a way to set associated application urls. */ - Q_PROPERTY(QString associatedApplication WRITE setAssociatedApplication READ associatedApplication) + Q_PROPERTY(QString associatedApplication WRITE setAssociatedApplication READ associatedApplication NOTIFY associatedApplicationChanged) + + /** + * Sets the associated application of this plasmoid, if the plasmoid is representing the "compact" view for some application or for some document type. + */ + Q_PROPERTY(QList associatedApplicationUrls WRITE setAssociatedApplicationUrls READ associatedApplicationUrls NOTIFY associatedApplicationUrlsChanged) // TODO: This was moved up from ContainmentInterface because it is required by the // Task Manager applet (for "Show only tasks from this screen") and no Qt API exposes @@ -275,6 +279,9 @@ public: void setAssociatedApplication(const QString &string); QString associatedApplication() const; + void setAssociatedApplicationUrls(const QList &urls); + QList associatedApplicationUrls() const; + void setStatus(const Plasma::Types::ItemStatus &status); Plasma::Types::ItemStatus status() const; @@ -327,6 +334,8 @@ Q_SIGNALS: void busyChanged(); void screenChanged(); void hideOnWindowDeactivateChanged(); + void associatedApplicationChanged(); + void associatedApplicationUrlsChanged(); void userConfiguringChanged(); void globalShortcutChanged();