Serenity Operating System
at master 47 lines 1.2 kB view raw
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}