Serenity Operating System
at master 40 lines 954 B view raw
1/* 2 * Copyright (c) 2021, Matthew Olsson <mattco@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include "OutlineModel.h" 10#include <LibGUI/ModelIndex.h> 11#include <LibGUI/TreeView.h> 12#include <LibGUI/Widget.h> 13#include <LibPDF/Document.h> 14 15class SidebarWidget final : public GUI::Widget { 16 C_OBJECT(SidebarWidget) 17 18public: 19 ~SidebarWidget() override = default; 20 21 Function<void(PDF::Destination const&)> on_destination_selected; 22 23 ErrorOr<void> set_outline(RefPtr<PDF::OutlineDict> outline) 24 { 25 if (outline) { 26 m_model = TRY(OutlineModel::create(outline.release_nonnull())); 27 m_outline_tree_view->set_model(m_model); 28 } else { 29 m_model = RefPtr<OutlineModel> {}; 30 m_outline_tree_view->set_model({}); 31 } 32 return {}; 33 } 34 35private: 36 SidebarWidget(); 37 38 RefPtr<OutlineModel> m_model; 39 RefPtr<GUI::TreeView> m_outline_tree_view; 40};