1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
- * Copyright (c) 2022, the SerenityOS developers.
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
- #pragma once
- #include <LibCore/EventLoop.h>
- #include <LibGUI/Window.h>
- namespace GUI {
- class Dialog : public Window {
- C_OBJECT(Dialog)
- public:
- enum class ExecResult {
- OK = 0,
- Cancel = 1,
- Aborted = 2,
- Yes = 3,
- No = 4,
- };
- enum ScreenPosition {
- CenterWithinParent = 0,
- Center = 1,
- CenterLeft = 2,
- CenterRight = 3,
- TopLeft = 4,
- TopCenter = 5,
- TopRight = 6,
- BottomLeft = 7,
- BottomCenter = 8,
- BottomRight = 9,
- };
- virtual ~Dialog() override = default;
- ExecResult exec();
- ExecResult result() const { return m_result; }
- void done(ExecResult);
- virtual void event(Core::Event&) override;
- virtual void close() override;
- protected:
- explicit Dialog(Window* parent_window, ScreenPosition screen_position = CenterWithinParent);
- private:
- OwnPtr<Core::EventLoop> m_event_loop;
- ExecResult m_result { ExecResult::Aborted };
- int m_screen_position { CenterWithinParent };
- };
- }
- template<>
- struct AK::Formatter<GUI::Dialog> : Formatter<Core::Object> {
- };
|