1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:27:43 +00:00

FileManager: Add a columns view

This new view, backed by a GColumnsView, joins the existing table and icon
views :^) Even though it displays a file tree, its data is provided by the very
same GFileSystemModel that the other two views use.

This commit also includes my attempt at making an icon for the new mode.
This commit is contained in:
Sergey Bugaev 2020-01-10 19:17:14 +03:00 committed by Andreas Kling
parent edb61d8bfd
commit 7bc8fa884a
4 changed files with 42 additions and 0 deletions

View file

@ -149,6 +149,7 @@ int main(int argc, char** argv)
RefPtr<GAction> view_as_table_action;
RefPtr<GAction> view_as_icons_action;
RefPtr<GAction> view_as_columns_action;
view_as_table_action = GAction::create("Table view", { Mod_Ctrl, KeyCode::Key_L }, GraphicsBitmap::load_from_file("/res/icons/16x16/table-view.png"), [&](const GAction&) {
directory_view->set_view_mode(DirectoryView::ViewMode::List);
@ -168,10 +169,20 @@ int main(int argc, char** argv)
});
view_as_icons_action->set_checkable(true);
view_as_columns_action = GAction::create("Columns view", GraphicsBitmap::load_from_file("/res/icons/16x16/columns-view.png"), [&](const GAction&) {
directory_view->set_view_mode(DirectoryView::ViewMode::Columns);
view_as_columns_action->set_checked(true);
config->write_entry("DirectoryView", "ViewMode", "Columns");
config->sync();
});
view_as_columns_action->set_checkable(true);
auto view_type_action_group = make<GActionGroup>();
view_type_action_group->set_exclusive(true);
view_type_action_group->add_action(*view_as_table_action);
view_type_action_group->add_action(*view_as_icons_action);
view_type_action_group->add_action(*view_as_columns_action);
auto selected_file_paths = [&] {
Vector<String> paths;
@ -385,6 +396,7 @@ int main(int argc, char** argv)
auto view_menu = GMenu::construct("View");
view_menu->add_action(*view_as_icons_action);
view_menu->add_action(*view_as_table_action);
view_menu->add_action(*view_as_columns_action);
menubar->add_menu(move(view_menu));
auto go_menu = GMenu::construct("Go");
@ -416,6 +428,7 @@ int main(int argc, char** argv)
main_toolbar->add_separator();
main_toolbar->add_action(*view_as_icons_action);
main_toolbar->add_action(*view_as_table_action);
main_toolbar->add_action(*view_as_columns_action);
directory_view->on_path_change = [&](const String& new_path) {
window->set_title(String::format("File Manager: %s", new_path.characters()));
@ -545,6 +558,9 @@ int main(int argc, char** argv)
if (dir_view_mode.contains("List")) {
directory_view->set_view_mode(DirectoryView::ViewMode::List);
view_as_table_action->set_checked(true);
} else if (dir_view_mode.contains("Columns")) {
directory_view->set_view_mode(DirectoryView::ViewMode::Columns);
view_as_columns_action->set_checked(true);
} else {
directory_view->set_view_mode(DirectoryView::ViewMode::Icon);
view_as_icons_action->set_checked(true);