Hello... WorkFlow Plasmoid

Marco Martin notmart at gmail.com
Fri Jun 22 15:32:25 UTC 2012


On Friday 22 June 2012, Michail V. wrote:
> Hello everyone,
> 
> I am developing a plasmoid called Workflow, the project's webpage can be
> found here:
> http://opentoolsandspace.org/en/projects/development/plasmoid-workflow
> 
> I'd love to have your feedback, as I have a deadline in my head for the
> first version
> mid-of September. The pieces are starting to get into place, it's almost
> usable right now
> but until now I have faced the following issues, I am developing it in
> KDE 4.8.4 at opensuse

Hi,
first of all, this is a very cool project, (there may be even some concepts of 
it that may make sense to be implemented in the default workspace)

how is written? c++? qml? a combination of the two?

> 1) I am using the following code to remove an activity:
> 
> void ActivityManager::remove(QString id) {
>      ActivityManager::stop(id);
> 
>      Plasma::Service *service = plasmaActEngine->serviceForSource(id);
>      KConfigGroup op = service->operationDescription("remove");
>      op.writeEntry("Id", id);
>      Plasma::ServiceJob *job = service->startOperationCall(op);
>      connect(job, SIGNAL(finished(KJob*)), service, SLOT(deleteLater()));
> 
> }
> 
> plasmaActEngine is org.kde.activities,
> the behavior is that the activity is not removed from the dataengine,
> there is a ghost activity
> in the dataengine that doesnt have some fields, name, icon etc...
> In order for someone to delete it completely the user must use the
> ActivityManager or make
> a logout/login

i seen this problem in the past.
seems that to be correctly deleted the deletion should happen at least an 
event loop after the stop. (like being done by a slot connected with a timer 
with 0 timeout).

if this is still the case in master is worth investigating why this happens.

> 
> 2) The plasmoid is developed as a PopupApplet in order to be able to be
> placed in a panel,
> I have tried many things but I can not restore the plasmoid in its
> previous used size after a logout/login,
> the popupapplet changes the DialogWidth,DialogHeight properties
> correctly in the plasmoids settings
> but after a logout/login the plasmoid remains in its default size.

is the size correctly saved in plasma-desktop-appletsrc?

in theory shouldn't be necessary to do anything
(may be a problem in the qml binding of popupapplet itself?)

> 3) I have tried to find a way to clone an activity through the plasmoid
> but I did not have any success.
> I have seen that the ActivitiesEngine, in plasma/desktop/shell, is using
> class PlasmaApp for most of the
> operations and not the dataengine, Is there a way to use PlasmaApp also?
> or in the future cloning an activity
> is going to be supported through the dataengine?

there aren't any exposed way, i don't think.
this because the implementation of activities/containment correspondence is in 
the shell executable, so not reachable by the plasma library.

i see several ways in which the containments cloning may be reached from a 
library tough.
what is needed is:
* a client asks the activity manager to duplicate an activity
* the activity manager signals this, the plasma shell duplicates the 
containments
* the activity manager duplicates the associations nepomuk resource/activity 
as well
* kwin duplicates the window association

i think the last two points are not done in any way for now.

this may also sparkle a discussion on what is the optimal workflow to create 
an activity:
* an empty one can be created
* or a duplicate of the current
* or one with all the files and windows currently open, regardless if they are 
associated or not
* or the union of last two points: all open stuff plus all currently 
associated to the current one

Cheers,
Marco Martin


More information about the Plasma-devel mailing list