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