00001
00024 #ifndef KEYBINDINGS_H
00025 #define KEYBINDINGS_H
00026
00027
00028 #include "action.h"
00029 #include "actionid.h"
00030 #include "actionset.h"
00031
00038 class KeyBindings
00039 {
00040 public:
00042 enum ConflictLevels { kKeyBindingWarning, kKeyBindingError, };
00043
00044 KeyBindings(const QString &hostname);
00045
00046
00047 bool AddActionKey(const QString &context_name,
00048 const QString &action_name,
00049 const QString &key);
00050 ActionID *GetConflict(const QString &context_name,
00051 const QString &key, int &level) const;
00052 void ReplaceActionKey(const QString &context_name,
00053 const QString &action_name,
00054 const QString &newkey,
00055 const QString &oldkey);
00056 bool RemoveActionKey(const QString &context_name,
00057 const QString &action_name,
00058 const QString &key);
00059 void CommitChanges(void);
00060
00061
00062 QStringList GetKeys(void) const;
00063 QStringList GetContexts(void) const;
00064 QStringList GetActions(const QString &context) const;
00065 void GetKeyActions(const QString &key, ActionList &list) const;
00066 QStringList GetActionKeys(const QString &context_name,
00067 const QString &action_name) const;
00068 QStringList GetContextKeys(const QString &context) const;
00069 QStringList GetKeyContexts(const QString &key) const;
00070 QString GetActionDescription(const QString &context_name,
00071 const QString &action_name) const;
00072 bool HasMandatoryBindings(void) const;
00073 bool HasChanges(void) const { return m_actionSet.HasModified(); }
00074
00075 protected:
00076 void CommitJumppoint(const ActionID &id);
00077 void CommitAction(const ActionID &id);
00078
00079 void LoadMandatoryBindings(void);
00080 void LoadContexts(void);
00081 void LoadJumppoints(void);
00082
00083 private:
00084 QString m_hostname;
00085 ActionList m_mandatoryBindings;
00086 QStringList m_defaultKeys;
00087 ActionSet m_actionSet;
00088 };
00089
00090 #endif