123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #include <AK/FileSystemPath.h>
- #include <AK/Optional.h>
- #include <LibCore/CUserInfo.h>
- #include <LibGUI/GDialog.h>
- #include <LibGUI/GTableView.h>
- class GDirectoryModel;
- class GLabel;
- class GTextBox;
- class GFilePicker final : public GDialog {
- C_OBJECT(GFilePicker)
- public:
- enum class Mode {
- Open,
- Save
- };
- static Optional<String> get_open_filepath();
- static Optional<String> get_save_filepath(const String& title, const String& extension);
- static bool file_exists(const StringView& path);
- GFilePicker(Mode type = Mode::Open, const StringView& file_name = "Untitled", const StringView& path = String(get_current_user_home_path()), CObject* parent = nullptr);
- virtual ~GFilePicker() override;
- FileSystemPath selected_file() const { return m_selected_file; }
- private:
- void set_preview(const FileSystemPath&);
- void clear_preview();
- void on_file_return();
- static String ok_button_name(Mode mode)
- {
- switch (mode) {
- case Mode::Open:
- return "Open";
- case Mode::Save:
- return "Save";
- default:
- return "OK";
- }
- }
- ObjectPtr<GTableView> m_view;
- NonnullRefPtr<GDirectoryModel> m_model;
- FileSystemPath m_selected_file;
- ObjectPtr<GTextBox> m_filename_textbox;
- ObjectPtr<GLabel> m_preview_image_label;
- ObjectPtr<GLabel> m_preview_name_label;
- ObjectPtr<GLabel> m_preview_geometry_label;
- Mode m_mode { Mode::Open };
- };
|