Serenity Operating System
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
8#include <AK/DeprecatedString.h>
9#include <AK/StringBuilder.h>
10#include <AK/Vector.h>
11#include <LibGUI/Shortcut.h>
12
13namespace GUI {
14
15DeprecatedString Shortcut::to_deprecated_string() const
16{
17 Vector<DeprecatedString, 8> parts;
18
19 if (m_modifiers & Mod_Ctrl)
20 parts.append("Ctrl");
21 if (m_modifiers & Mod_Shift)
22 parts.append("Shift");
23 if (m_modifiers & Mod_Alt)
24 parts.append("Alt");
25 if (m_modifiers & Mod_AltGr)
26 parts.append("AltGr");
27 if (m_modifiers & Mod_Super)
28 parts.append("Super");
29
30 if (m_type == Type::Keyboard) {
31 if (auto* key_name = key_code_to_string(m_keyboard_key))
32 parts.append(key_name);
33 else
34 parts.append("(Invalid)");
35 } else {
36 if (m_mouse_button != MouseButton::None)
37 parts.append(DeprecatedString::formatted("Mouse {}", mouse_button_to_string(m_mouse_button)));
38 else
39 parts.append("(Invalid)");
40 }
41
42 StringBuilder builder;
43 builder.join('+', parts);
44 return builder.to_deprecated_string();
45}
46
47}