1/*
2 * Copyright (C) 2020-2022 The opuntiaOS Project Authors.
3 * + Contributed by Nikita Melekhin <nimelehin@gmail.com>
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9#include <libfoundation/EventLoop.h>
10#include <libui/App.h>
11#include <libui/MenuBar.h>
12
13namespace UI {
14
15void MenuBar::add_menu(const Menu& menu)
16{
17 Menu new_menu = menu;
18 auto& connection = App::the().connection();
19 auto resp_message = connection.send_sync_message<MenuBarCreateMenuMessageReply>(MenuBarCreateMenuMessage(connection.key(), m_host_window_id, new_menu.title()));
20 new_menu.set_menu_id(resp_message->menu_id());
21
22 // TODO: Speed up sending only 1 message.
23 for (auto& item : new_menu.items()) {
24 auto resp_message = connection.send_sync_message<MenuBarCreateItemMessageReply>(MenuBarCreateItemMessage(connection.key(), host_window_id(), new_menu.menu_id(), item.m_id, item.title()));
25 }
26
27 m_menus.push_back(std::move(new_menu));
28}
29
30void MenuBar::add_menu(Menu&& menu)
31{
32 Menu new_menu = std::move(menu);
33 auto& connection = App::the().connection();
34 auto resp_message = connection.send_sync_message<MenuBarCreateMenuMessageReply>(MenuBarCreateMenuMessage(connection.key(), m_host_window_id, new_menu.title()));
35 new_menu.set_menu_id(resp_message->menu_id());
36
37 // TODO: Speed up sending only 1 message.
38 for (auto& item : new_menu.items()) {
39 auto resp_message = connection.send_sync_message<MenuBarCreateItemMessageReply>(MenuBarCreateItemMessage(connection.key(), host_window_id(), new_menu.menu_id(), item.m_id, item.title()));
40 }
41
42 m_menus.push_back(std::move(new_menu));
43}
44
45} // namespace UI