ladybird/Userland/Applications/PDFViewer/SidebarWidget.cpp
Rodrigo Tobar d739877807 PDFViewer: Inform about selections on Outline view
Selecting an Outline Item from the Outline view informs via callback the
corresponding Destination that has been selected. This will be used to
move the application to the corresponding page/section/etc.
2022-12-17 19:40:52 +01:00

42 lines
1.4 KiB
C++

/*
* Copyright (c) 2021, Matthew Olsson <mattco@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "SidebarWidget.h"
#include "OutlineModel.h"
#include <LibGUI/BoxLayout.h>
#include <LibGUI/TabWidget.h>
SidebarWidget::SidebarWidget()
{
set_fill_with_background_color(true);
set_layout<GUI::VerticalBoxLayout>();
set_enabled(false);
auto& tab_bar = add<GUI::TabWidget>();
auto& outline_container = tab_bar.add_tab<GUI::Widget>("Outline");
outline_container.set_layout<GUI::VerticalBoxLayout>();
outline_container.layout()->set_margins(4);
m_outline_tree_view = outline_container.add<GUI::TreeView>();
m_outline_tree_view->set_activates_on_selection(true);
m_outline_tree_view->set_should_fill_selected_rows(true);
m_outline_tree_view->set_selection_behavior(GUI::AbstractView::SelectionBehavior::SelectRows);
m_outline_tree_view->on_selection_change = [this]() {
auto& selection = m_outline_tree_view->selection();
if (selection.is_empty())
return;
auto destination = OutlineModel::get_destination(selection.first());
on_destination_selected(destination);
};
auto& thumbnails_container = tab_bar.add_tab<GUI::Widget>("Thumbnails");
thumbnails_container.set_layout<GUI::VerticalBoxLayout>();
thumbnails_container.layout()->set_margins(4);
// FIXME: Add thumbnail previews
}