Shortcut.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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/String.h>
  8. #include <AK/StringBuilder.h>
  9. #include <AK/Vector.h>
  10. #include <LibGUI/Shortcut.h>
  11. namespace GUI {
  12. String Shortcut::to_string() const
  13. {
  14. Vector<String, 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_Super)
  22. parts.append("Super");
  23. if (m_type == Type::Keyboard) {
  24. if (auto* key_name = key_code_to_string(m_keyboard_key))
  25. parts.append(key_name);
  26. else
  27. parts.append("(Invalid)");
  28. } else {
  29. if (m_mouse_button != MouseButton::None)
  30. parts.append(String::formatted("Mouse {}", mouse_button_to_string(m_mouse_button)));
  31. else
  32. parts.append("(Invalid)");
  33. }
  34. StringBuilder builder;
  35. builder.join('+', parts);
  36. return builder.to_string();
  37. }
  38. }