From 67c561efbeaa26131258c41b208f1890cb4865c5 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 4 Apr 2025 16:31:38 +0200 Subject: adw: implement required AlertDialog functions --- adw/include/adwaitamm/alertdialog.hpp | 20 ++++++++++++++++++-- adw/include/adwaitamm/helpers/async_callback.hpp | 15 +++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 adw/include/adwaitamm/helpers/async_callback.hpp (limited to 'adw/include') diff --git a/adw/include/adwaitamm/alertdialog.hpp b/adw/include/adwaitamm/alertdialog.hpp index 9da8488..8608cc6 100644 --- a/adw/include/adwaitamm/alertdialog.hpp +++ b/adw/include/adwaitamm/alertdialog.hpp @@ -10,6 +10,9 @@ #include #include +#include +#include + #include #include @@ -19,8 +22,6 @@ using AdwAlertDialogClass = struct _AdwAlertDialogClass; namespace Adwaita { - struct Dialog_Class; - struct AlertDialog : Dialog, helpers::gobj_mixin { @@ -37,6 +38,13 @@ namespace Adwaita auto static wrap_new(GObject * object) -> Glib::ObjectBase *; }; + enum struct ResponseAppearance : int + { + _default, + suggested, + destructive, + }; + using BaseObjectType = Class::BaseObjectType; using BaseClassType = Class::BaseClassType; using CppObjectType = Class::CppObjectType; @@ -52,9 +60,17 @@ namespace Adwaita auto operator=(AlertDialog const & other) noexcept -> AlertDialog & = delete; auto operator=(AlertDialog && other) noexcept -> AlertDialog & = default; + auto static create(Glib::ustring heading, Glib::ustring body) -> Glib::RefPtr; auto static get_type() -> GType; auto static get_base_type() -> GType; + auto add_response(Glib::ustring id, Glib::ustring label) -> void; + auto choose(Gtk::Widget & parent, Glib::RefPtr const & cancellable, Gio::SlotAsyncReady const & slot) -> void; + auto choose_finish(Glib::RefPtr const & result) -> Glib::ustring; + auto set_close_response(Glib::ustring id) -> void; + auto set_default_response(Glib::ustring id) -> void; + auto set_response_appearance(Glib::ustring id, ResponseAppearance value) -> void; + protected: explicit AlertDialog(Glib::ConstructParams const & params); explicit AlertDialog(BaseObjectType * gobj); diff --git a/adw/include/adwaitamm/helpers/async_callback.hpp b/adw/include/adwaitamm/helpers/async_callback.hpp new file mode 100644 index 0000000..e352359 --- /dev/null +++ b/adw/include/adwaitamm/helpers/async_callback.hpp @@ -0,0 +1,15 @@ +#ifndef LIBADWAITAMM_HELPERS_ASYNC_CALLBACK_HPP +#define LIBADWAITAMM_HELPERS_ASYNC_CALLBACK_HPP + +#include + +#include + +namespace Adwaita::helpers +{ + + auto async_callback(GObject *, GAsyncResult * result, void * data) noexcept -> void; + +} // namespace Adwaita::helpers + +#endif \ No newline at end of file -- cgit v1.2.3