Serenity Operating System
at master 46 lines 1.1 kB view raw
1/* 2 * Copyright (c) 2020, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/Optional.h> 10#include <AK/OwnPtr.h> 11#include <LibGUI/Dialog.h> 12#include <LibUnicode/Emoji.h> 13 14namespace GUI { 15 16class EmojiInputDialog final : public Dialog { 17 C_OBJECT(EmojiInputDialog); 18 19 struct Emoji { 20 RefPtr<Button> button; 21 Unicode::Emoji emoji; 22 DeprecatedString text; 23 }; 24 25public: 26 DeprecatedString const& selected_emoji_text() const { return m_selected_emoji_text; } 27 28private: 29 explicit EmojiInputDialog(Window* parent_window); 30 31 Vector<Emoji> supported_emoji(); 32 void update_displayed_emoji(); 33 void select_first_displayed_emoji(); 34 35 OwnPtr<ActionGroup> m_category_action_group; 36 Optional<Unicode::EmojiGroup> m_selected_category; 37 38 RefPtr<TextBox> m_search_box; 39 RefPtr<Toolbar> m_toolbar; 40 RefPtr<Widget> m_emojis_widget; 41 Vector<Emoji> m_emojis; 42 Emoji const* m_first_displayed_emoji { nullptr }; 43 DeprecatedString m_selected_emoji_text; 44}; 45 46}