diff --git a/Userland/Libraries/LibGUI/CMakeLists.txt b/Userland/Libraries/LibGUI/CMakeLists.txt index c3bbd3ed80..4bbaa8ff28 100644 --- a/Userland/Libraries/LibGUI/CMakeLists.txt +++ b/Userland/Libraries/LibGUI/CMakeLists.txt @@ -1,4 +1,5 @@ compile_gml(FontPickerDialog.gml FontPickerDialogGML.h font_picker_dialog_gml) +compile_gml(FilePickerDialog.gml FilePickerDialogGML.h file_picker_dialog_gml) set(SOURCES AboutDialog.cpp @@ -31,6 +32,7 @@ set(SOURCES Event.cpp FileIconProvider.cpp FilePicker.cpp + FilePickerDialogGML.h FileSystemModel.cpp FilteringProxyModel.cpp FontPicker.cpp diff --git a/Userland/Libraries/LibGUI/FilePicker.cpp b/Userland/Libraries/LibGUI/FilePicker.cpp index cf3b75989c..ac933f5636 100644 --- a/Userland/Libraries/LibGUI/FilePicker.cpp +++ b/Userland/Libraries/LibGUI/FilePicker.cpp @@ -32,9 +32,9 @@ #include #include #include +#include #include #include -#include #include #include #include @@ -45,9 +45,9 @@ namespace GUI { -Optional FilePicker::get_open_filepath(Window* parent_window, const String& window_title, Options options) +Optional FilePicker::get_open_filepath(Window* parent_window, const String& window_title) { - auto picker = FilePicker::construct(parent_window, Mode::Open, options); + auto picker = FilePicker::construct(parent_window, Mode::Open); if (!window_title.is_null()) picker->set_title(window_title); @@ -63,9 +63,9 @@ Optional FilePicker::get_open_filepath(Window* parent_window, const Stri return {}; } -Optional FilePicker::get_save_filepath(Window* parent_window, const String& title, const String& extension, Options options) +Optional FilePicker::get_save_filepath(Window* parent_window, const String& title, const String& extension) { - auto picker = FilePicker::construct(parent_window, Mode::Save, options, String::formatted("{}.{}", title, extension)); + auto picker = FilePicker::construct(parent_window, Mode::Save, String::formatted("{}.{}", title, extension)); if (picker->exec() == Dialog::ExecOK) { String file_path = picker->selected_file().string(); @@ -78,7 +78,7 @@ Optional FilePicker::get_save_filepath(Window* parent_window, const Stri return {}; } -FilePicker::FilePicker(Window* parent_window, Mode mode, Options options, const StringView& file_name, const StringView& path) +FilePicker::FilePicker(Window* parent_window, Mode mode, const StringView& file_name, const StringView& path) : Dialog(parent_window) , m_model(FileSystemModel::create()) , m_mode(mode) @@ -95,28 +95,18 @@ FilePicker::FilePicker(Window* parent_window, Mode mode, Options options, const break; } resize(560, 320); - auto& horizontal_container = set_main_widget(); - horizontal_container.set_layout(); - horizontal_container.layout()->set_margins({ 4, 4, 4, 4 }); - horizontal_container.set_fill_with_background_color(true); - auto& vertical_container = horizontal_container.add(); - vertical_container.set_layout(); - vertical_container.layout()->set_spacing(4); + auto& widget = set_main_widget(); + if (!widget.load_from_gml(file_picker_dialog_gml)) + ASSERT_NOT_REACHED(); - auto& upper_container = vertical_container.add(); - upper_container.set_layout(); - upper_container.layout()->set_spacing(2); - upper_container.set_fixed_height(26); - - auto& toolbar = upper_container.add(); - toolbar.set_fixed_width(165); + auto& toolbar = *widget.find_descendant_of_type_named("toolbar"); toolbar.set_has_frame(false); - m_location_textbox = upper_container.add(); + m_location_textbox = *widget.find_descendant_of_type_named("location_textbox"); m_location_textbox->set_text(path); - m_view = vertical_container.add(); + m_view = *widget.find_descendant_of_type_named("view"); m_view->set_selection_mode(m_mode == Mode::OpenMultiple ? GUI::AbstractView::SelectionMode::MultiSelection : GUI::AbstractView::SelectionMode::SingleSelection); m_view->set_model(SortingProxyModel::create(*m_model)); m_view->set_model_column(FileSystemModel::Column::Name); @@ -167,18 +157,7 @@ FilePicker::FilePicker(Window* parent_window, Mode mode, Options options, const toolbar.add_action(m_view->view_as_table_action()); toolbar.add_action(m_view->view_as_columns_action()); - auto& lower_container = vertical_container.add(); - lower_container.set_layout(); - lower_container.layout()->set_spacing(4); - lower_container.set_fixed_height(48); - - auto& filename_container = lower_container.add(); - filename_container.set_fixed_height(22); - filename_container.set_layout(); - auto& filename_label = filename_container.add