Serenity Operating System
1/*
2 * Copyright (c) 2022, the SerenityOS developers.
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include "History.h"
10#include "ManualModel.h"
11#include <LibGUI/FilteringProxyModel.h>
12#include <LibWebView/OutOfProcessWebView.h>
13
14namespace Help {
15
16class MainWidget final : public GUI::Widget {
17 C_OBJECT(MainWidget);
18
19public:
20 virtual ~MainWidget() override = default;
21
22 ErrorOr<void> initialize_fallibles(GUI::Window&);
23 ErrorOr<void> set_start_page(Vector<StringView, 2> query_parameters);
24
25private:
26 MainWidget();
27
28 void open_url(URL const&);
29 void open_page(Optional<String> const& path);
30 void open_external(URL const&);
31
32 History m_history;
33 RefPtr<GUI::Menu> m_context_menu;
34 RefPtr<ManualModel> m_manual_model;
35 RefPtr<GUI::FilteringProxyModel> m_filter_model;
36
37 RefPtr<GUI::Action> m_go_back_action;
38 RefPtr<GUI::Action> m_go_forward_action;
39 RefPtr<GUI::Action> m_go_home_action;
40 RefPtr<GUI::Action> m_copy_action;
41 RefPtr<GUI::Action> m_select_all_action;
42
43 RefPtr<GUI::TabWidget> m_tab_widget;
44 RefPtr<GUI::Widget> m_search_container;
45 RefPtr<GUI::TextBox> m_search_box;
46 RefPtr<GUI::ListView> m_search_view;
47 RefPtr<GUI::TreeView> m_browse_view;
48 RefPtr<WebView::OutOfProcessWebView> m_web_view;
49
50 RefPtr<GUI::Toolbar> m_toolbar;
51 RefPtr<GUI::Statusbar> m_statusbar;
52};
53
54}