proposal for kaction api change

Jens Herden jens at
Fri May 5 03:45:34 BST 2006


inspired by a discussion on kde-devel I was looking into kaction and I would 
like to propose to clean up the interface a little. There are many methods 
related to shortcuts and I think we should reduce them.

Basicly we have now two shortcut types, one custom and one global plus default 
values for both, makes four different shortcuts in total.

There is a enum which covers two of the four:

enum ShortcutType {
      /// The shortcut is a custom shortcut
      CustomShortcut = 0x1,
      /// The shortcut is a default shortcut
      DefaultShortcut = 0x2

But the distinction between global/local is done by different method names. We 
could reduce the number of methods if we would change our enum like:

enum ShortcutType {
      /// normal shortcut
      Shortcut = 0x1,
      /// default shortcut
      DefaultShortcut = 0x2
      /// global shortcut
      GlobalShortcut = 0x4
      /// default global shortcut
      DefaultGlobalShortcut = 0x8

and use only one setter and getter for our shortcuts, like:

setKShortcut(setShortcut(const KShortcut& shortcut, ShortcutTypes type = 
          static_cast<ShortcutType>(Shortcut | DefaultShortcut));

const KShortcut& kShortcut(ShortcutTypes types = Shortcut) const;

Please note that the names are intentional not setShortcut() and shortcut() 
because I do not want to hide the QAction methods. 

I would remove then:

This change would be more in line with how QAction is working, there you have 
also one enum to describe the way how the shortcuts works. I also believe 
that most users of the class would be happy with the default values for 
setting and getting a shortcut, so that they don't have to worry about which 
method would be the right one. 

I am looking forward to get comments.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <>

More information about the kde-core-devel mailing list