Shortcut.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. * Copyright (c) 2022, Geordie Hall <me@geordiehall.com>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #include <AK/DeprecatedString.h>
  8. #include <AK/StringBuilder.h>
  9. #include <AK/Vector.h>
  10. #include <LibGUI/Shortcut.h>
  11. namespace GUI {
  12. DeprecatedString Shortcut::to_deprecated_string() const
  13. {
  14. Vector<DeprecatedString, 8> parts;
  15. if (m_modifiers & Mod_Ctrl)
  16. parts.append("Ctrl");
  17. if (m_modifiers & Mod_Shift)
  18. parts.append("Shift");
  19. if (m_modifiers & Mod_Alt)
  20. parts.append("Alt");
  21. if (m_modifiers & Mod_AltGr)
  22. parts.append("AltGr");
  23. if (m_modifiers & Mod_Super)
  24. parts.append("Super");
  25. if (m_type == Type::Keyboard) {
  26. if (auto* key_name = key_code_to_string(m_keyboard_key))
  27. parts.append(key_name);
  28. else
  29. parts.append("(Invalid)");
  30. } else {
  31. if (m_mouse_button != MouseButton::None)
  32. parts.append(DeprecatedString::formatted("Mouse {}", mouse_button_to_string(m_mouse_button)));
  33. else
  34. parts.append("(Invalid)");
  35. }
  36. StringBuilder builder;
  37. builder.join('+', parts);
  38. return builder.to_deprecated_string();
  39. }
  40. }