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

List:       kde-panel-devel
Subject:    Re: Review Request: Multiple action support for KRunner
From:       "Ryan Bitanga" <ryan.bitanga () gmail ! com>
Date:       2008-09-08 11:52:02
Message-ID: 20080908115202.28959.8515 () vidsolbach ! de
[Download RAW message or body]


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.vidsolbach.de/r/178/
-----------------------------------------------------------

(Updated 2008-09-08 04:52:02.917524)


Review request for Plasma.


Summary
-------

This introduces multiple action (or noun-verb) support for runners. Each QueryMatch \
(the noun) can now have multiple actions associated with it.

Actions are QueryActions which inherit QAction. I intend to extend QueryAction to \
support mimetypes and more functionality. If QueryActions have associated mimetypes, \
the runner can intelligently select which of the available actions to add to the \
match.

Another possibility would be to add object support to an action. For example, a match \
returned by the Desktop Search runner could have the action "Copy to...". The object \
of the action would be a directory. I'm still looking for ways to implement this. One \
way would be to have a set of core runners designated as object providers (e.g. \
Places, Contacts) and run a secondary query on a specific runner.

Because QueryActions are GUI objects, they need to live in the GUI thread. That means \
that QueryActions must be created outside of the match method, preferably at the time \
of runner construction. After creation, QueryActions must be registered with \
QueryActionPool, the global action registry. This allows QueryActions to only be \
created once during the lifetime of a runner. This also allows runners to add actions \
that belong to different runners. However, correct execution of the action is left up \
to the runner in the exec method. I'll provide an example of how to do this soon.

Multiple action support is optional. Runners that do not create actions will continue \
to function just as they did prior to the introduction of multiple action support.

An example implementation with multiple action support is the amarok-based \
mediaplayer runner currently in playground. To access the actions, right click on the \
icon and select the desired action. Note, the temporary solution triggers the action \
upon selection the action in the context menu. Pressing enter or clicking on the icon \
will cause the action to be performed again.

I'll address that after I finish up work on my alternative front-end QuickSand. :)


Diffs
-----

  trunk/KDE/kdebase/workspace/krunner/resultitem.h
  trunk/KDE/kdebase/workspace/krunner/resultitem.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/CMakeLists.txt
  trunk/KDE/kdebase/workspace/libs/plasma/actionpool.h
  trunk/KDE/kdebase/workspace/libs/plasma/actionpool.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/includes/QueryAction
  trunk/KDE/kdebase/workspace/libs/plasma/includes/QueryActionPool
  trunk/KDE/kdebase/workspace/libs/plasma/queryaction.h
  trunk/KDE/kdebase/workspace/libs/plasma/queryaction.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/querymatch.h
  trunk/KDE/kdebase/workspace/libs/plasma/querymatch.cpp

Diff: http://reviewboard.vidsolbach.de/r/178/diff


Testing
-------


Thanks,

Ryan

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel


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

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