[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-active
Subject:    Contour/Active global context menus
From:       notmart () gmail ! com (Marco Martin)
Date:       2011-05-25 16:38:59
Message-ID: 201105251838.59316.notmart () gmail ! com
[Download RAW message or body]

On Wednesday 25 May 2011, Sebastian K?gler wrote:
> 
> > so, we did  two similar plugin systems, that both for the resource
> > delegates and for the menu items themselves can load qml files which
> > path can depend from the resource type (and from the action name, for
> > menu actions, since the rate widget will have to be different from a
> > simple text entry)
> > 
> > now, from where the actions come?
> > right now there is an hardcoded qml ListModel for each resource type that
> > lists them, but this isn't an optimal solution for sure.
> 
> We could use an ActionModel per resource delegate, and put them in the same
> dirs, per resource type, so with a FileDataObject/ListItem.qml we'd load
> FileDataObject/ContextActionModel.qml, and possibly special FooMenuItem.qml
> in there.
> 

yup, this is also a possibility, i could see two problems with it:
* that those delegates are getting quite fatter and there is going to be a 
separate instance for each item)
* would not be possible for action to automatically appear once slc supports a 
new action (model would have to be manually pathched)

i could see also some advantages, however ;)
* would be somewhat easy to implement, we are already not far from it
* would be easy to provide a pretty stable, properly size and not ever 
changing list of actions

> >    * "rate"  hash(name->i18n("rate"), operation->"rate")
> >    * "addToCurrentActivity" hash(name->i18n("add to the current
> >    activity"),
> > 
> > operation->"addToCurrentActivity")
> > 
> > the context menu would show those actions coming from the two
> > dataengines, as possible operations get added to the dataengines they
> > will all get available everywhere
> 
> Hm, could also lead to clutter in the UI...

yep, it should be not teh everything, but just a few relevant things

> > a part that i would really need feedback, is how to generate that action
> > list, a way can be from the dataengines as described, but i feel there
> > can be still room for improvement.
> > suggestions? comments?
> 
> The JavaScript Service API lists those methods, that would at least list
> the available operations, but not the parameters.
> 
> function operationNames()
> function operationDescription(QString)
> 
> Another thing, not all operations might be interesting in the UI, I think
> it would actually be fine to "hardcode" the actions in the ActionsModel
> (if necessary, we can share code among them, but it seems mostly
> relatively simple functions). The harder parts are done in the ServiceJob
> in C++, the ui-logic is done in the either the resourcedelegate
> directories, that's where you can "disambiguate" the actions (remove means
> something different for a bookmark than for a file, for example). Seems
> like a logical split to me.

yes, it wouldn't be just listing of service operations, that's why i tought 
about an actual dataengine source, that would cope a bit better with dynamic 
entries and scoring of entries (what could be used as scoring criteria? or 
does the idea of scoring actions make sense at all?)


Cheers,
Marco Martin

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic