summaryrefslogtreecommitdiff
path: root/indra/newview/llkeyconflict.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llkeyconflict.h')
-rw-r--r--indra/newview/llkeyconflict.h117
1 files changed, 19 insertions, 98 deletions
diff --git a/indra/newview/llkeyconflict.h b/indra/newview/llkeyconflict.h
index e4a6da30d0..a0886bedce 100644
--- a/indra/newview/llkeyconflict.h
+++ b/indra/newview/llkeyconflict.h
@@ -70,114 +70,35 @@ public:
// at the moment this just means that key will conflict with everything that is identical
const U32 CONFLICT_ANY = U32_MAX;
- // todo, unfortunately will have to remove this and use map/array of strings
- enum EControlTypes
- {
- CONTROL_VIEW_ACTIONS = 0, // Group control, for visual representation in view, not for use
- CONTROL_ABOUT,
- CONTROL_ORBIT,
- CONTROL_PAN,
- CONTROL_WORLD_MAP,
- CONTROL_ZOOM,
- CONTROL_INTERACTIONS, // Group control, for visual representation
- CONTROL_BUILD,
- //CONTROL_DRAG,
- CONTROL_EDIT,
- //CONTROL_MENU,
- CONTROL_OPEN,
- CONTROL_TOUCH,
- CONTROL_WEAR,
- CONTROL_MOVEMENTS, // Group control, for visual representation
- CONTROL_MOVETO,
- CONTROL_TELEPORTTO,
- CONTROL_FORWARD,
- CONTROL_BACKWARD,
- CONTROL_LEFT, // Check and sinc name with real movement names
- CONTROL_RIGHT,
- CONTROL_LSTRAFE,
- CONTROL_RSTRAFE,
- CONTROL_JUMP,
- CONTROL_DOWN,
- //CONTROL_RUN,
- CONTROL_TOGGLE_RUN,
- CONTROL_TOGGLE_FLY,
- CONTROL_SIT,
- CONTROL_STOP,
- CONTROL_CAMERA, // Group control, for visual representation
- CONTROL_LOOK_UP,
- CONTROL_LOOK_DOWN,
- CONTROL_CAMERA_FORWARD,
- CONTROL_CAMERA_BACKWARD,
- CONTROL_CAMERA_FFORWARD,
- CONTROL_CAMERA_FBACKWARD,
- CONTROL_CAMERA_FSITTING,
- CONTROL_CAMERA_BSITTING,
- CONTROL_CAMERA_SOVER,
- CONTROL_CAMERA_SUNDER,
- CONTROL_CAMERA_SOVER_SITTING,
- CONTROL_CAMERA_SUNDER_SITTING,
- CONTROL_CAMERA_PANUP,
- CONTROL_CAMERA_PANDOWN,
- CONTROL_CAMERA_PANLEFT,
- CONTROL_CAMERA_PANRIGHT,
- CONTROL_CAMERA_PANIN,
- CONTROL_CAMERA_PANOUT,
- CONTROL_CAMERA_SPIN_CCW,
- CONTROL_CAMERA_SPIN_CW,
- CONTROL_CAMERA_SPIN_CCW_SITTING,
- CONTROL_CAMERA_SPIN_CW_SITTING,
- CONTROL_EDIT_TITLE, // Group control, for visual representation
- CONTROL_EDIT_AV_SPIN_CCW,
- CONTROL_EDIT_AV_SPIN_CW,
- CONTROL_EDIT_AV_SPIN_OVER,
- CONTROL_EDIT_AV_SPIN_UNDER,
- CONTROL_EDIT_AV_MV_FORWARD,
- CONTROL_EDIT_AV_MV_BACKWARD,
- CONTROL_MEDIACONTENT, // Group control, for visual representation
- CONTROL_PAUSE_MEDIA, // Play pause
- CONTROL_ENABLE_MEDIA, // Play stop
- CONTROL_VOICE, // Keep pressing for voice to be ON
- CONTROL_TOGGLE_VOICE, // Press once to ON/OFF
- CONTROL_START_CHAT, // Press once to ON/OFF
- CONTROL_START_GESTURE, // Press once to ON/OFF
- CONTROL_RESERVED, // Special group control, controls that are disabled by default and not meant to be changed
- CONTROL_DELETE,
- CONTROL_RESERVED_MENU,
- CONTROL_RESERVED_SELECT,
- CONTROL_SHIFT_SELECT,
- CONTROL_CNTRL_SELECT,
- CONTROL_NUM_INDICES // Size, always should be last
- };
-
// Note: missed selection and edition commands (would be really nice to go through selection via MB4/5 or wheel)
LLKeyConflictHandler();
LLKeyConflictHandler(ESourceMode mode);
- bool canHandleControl(EControlTypes control_type, EMouseClickType mouse_ind, KEY key, MASK mask);
- bool canHandleKey(EControlTypes control_type, KEY key, MASK mask);
- bool canHandleMouse(EControlTypes control_type, EMouseClickType mouse_ind, MASK mask);
- bool canHandleMouse(EControlTypes control_type, S32 mouse_ind, MASK mask); //Just for convinience
- bool canAssignControl(EControlTypes control_type);
- bool registerControl(EControlTypes control_type, U32 data_index, EMouseClickType mouse_ind, KEY key, MASK mask, bool ignore_mask); //todo: return conflicts?
-
- LLKeyData getControl(EControlTypes control_type, U32 data_index);
+ bool canHandleControl(const std::string &control_name, EMouseClickType mouse_ind, KEY key, MASK mask);
+ bool canHandleKey(const std::string &control_name, KEY key, MASK mask);
+ bool canHandleMouse(const std::string &control_name, EMouseClickType mouse_ind, MASK mask);
+ bool canHandleMouse(const std::string &control_name, S32 mouse_ind, MASK mask); //Just for convinience
+ bool canAssignControl(const std::string &control_name);
+ bool registerControl(const std::string &control_name, U32 data_index, EMouseClickType mouse_ind, KEY key, MASK mask, bool ignore_mask); //todo: return conflicts?
- static std::string LLKeyConflictHandler::getStringFromKeyData(const LLKeyData& keydata);
- static std::string getControlName(EControlTypes control_type);
- std::string getControlString(EControlTypes control_type, U32 data_index);
+ LLKeyData getControl(const std::string &control_name, U32 data_index);
+ static std::string getStringFromKeyData(const LLKeyData& keydata);
+ std::string getControlString(const std::string &control_name, U32 data_index);
+ // Load single control, overrides existing one if names match
+ void loadFromControlSettings(const std::string &name);
// Drops any changes loads controls with ones from 'saved settings' or from xml
void loadFromSettings(ESourceMode load_mode);
// Saves settings to 'saved settings' or to xml
void saveToSettings();
- LLKeyData getDefaultControl(EControlTypes control_type, U32 data_index);
+ LLKeyData getDefaultControl(const std::string &control_name, U32 data_index);
// Resets keybinding to default variant from 'saved settings' or xml
- void resetToDefault(EControlTypes control_type, U32 index);
- void resetToDefault(EControlTypes control_type);
- // resets current mode to defaults,
+ void resetToDefault(const std::string &control_name, U32 index);
+ void resetToDefault(const std::string &control_name);
+ // resets current mode to defaults
void resetToDefaults();
bool empty() { return mControlsMap.empty(); }
@@ -188,15 +109,15 @@ public:
ESourceMode getLoadMode() { return mLoadMode; }
private:
- void resetToDefaultAndResolve(EControlTypes control_type, bool ignore_conflicts);
+ void resetToDefaultAndResolve(const std::string &control_name, bool ignore_conflicts);
void resetToDefaults(ESourceMode mode);
// at the moment these kind of control is not savable, but takes part will take part in conflict resolution
- void registerTemporaryControl(EControlTypes control_type, EMouseClickType mouse_ind, KEY key, MASK mask, U32 conflict_mask);
+ void registerTemporaryControl(const std::string &control_name, EMouseClickType mouse_ind, KEY key, MASK mask, U32 conflict_mask);
- typedef std::map<EControlTypes, LLKeyConflict> control_map_t;
+ typedef std::map<std::string, LLKeyConflict> control_map_t;
void loadFromSettings(const LLViewerInput::KeyMode& keymode, control_map_t *destination);
- void loadFromSettings(const ESourceMode &load_mode, const std::string &filename, control_map_t *destination);
+ bool loadFromSettings(const ESourceMode &load_mode, const std::string &filename, control_map_t *destination);
void resetKeyboardBindings();
void generatePlaceholders(ESourceMode load_mode); //E.x. non-assignable values
// returns false in case user is trying to reuse control that can't be reassigned