diff options
Diffstat (limited to 'app/include/turns')
| -rw-r--r-- | app/include/turns/app/application.hpp | 2 | ||||
| -rw-r--r-- | app/include/turns/app/widgets/participant_row.hpp | 5 | ||||
| -rw-r--r-- | app/include/turns/app/widgets/turn_order_view.hpp | 48 | ||||
| -rw-r--r-- | app/include/turns/app/windows/main.hpp | 7 |
4 files changed, 54 insertions, 8 deletions
diff --git a/app/include/turns/app/application.hpp b/app/include/turns/app/application.hpp index 81fe333..6506dd7 100644 --- a/app/include/turns/app/application.hpp +++ b/app/include/turns/app/application.hpp @@ -27,6 +27,8 @@ namespace turns::app auto on_shutdown() -> void; auto on_startup() -> void; + auto register_derived_widgets() -> void; + AdwApplication * m_adw; Glib::RefPtr<Gtk::Application> m_application; windows::main * m_main; diff --git a/app/include/turns/app/widgets/participant_row.hpp b/app/include/turns/app/widgets/participant_row.hpp index a8f225f..79de1e9 100644 --- a/app/include/turns/app/widgets/participant_row.hpp +++ b/app/include/turns/app/widgets/participant_row.hpp @@ -28,9 +28,6 @@ namespace turns::app::widgets participant_row(Glib::RefPtr<domain::participant> participant); - auto set_subtitle(Glib::ustring const & value) -> void; - auto set_title(Glib::ustring const & value) -> void; - private: auto handle_delete() -> void; auto handle_edit() -> void; @@ -41,7 +38,9 @@ namespace turns::app::widgets Gtk::Label * m_title; Gtk::ToggleButton * m_toggle_defeated; + Glib::RefPtr<Glib::Binding> m_subtitle_label{}; Glib::RefPtr<Glib::Binding> m_subtitle_visibility{}; + Glib::RefPtr<Glib::Binding> m_title_label{}; Glib::RefPtr<Glib::Binding> m_title_visibility{}; Glib::RefPtr<Glib::Binding> m_toggle_defeated_icon{}; }; diff --git a/app/include/turns/app/widgets/turn_order_view.hpp b/app/include/turns/app/widgets/turn_order_view.hpp new file mode 100644 index 0000000..c55483a --- /dev/null +++ b/app/include/turns/app/widgets/turn_order_view.hpp @@ -0,0 +1,48 @@ +#ifndef TURNS_APP_WIDGETS_TURN_ORDER_VIEW_HPP +#define TURNS_APP_WIDGETS_TURN_ORDER_VIEW_HPP + +#include "turns/app/widgets/template_widget.hpp" +#include "turns/domain/turn_order.hpp" +#include "turns/domain/participant.hpp" +#include "turns/domain/disposition.hpp" + +#include <array> + +#include <glibmm/object.h> +#include <glibmm/propertyproxy.h> +#include <glibmm/refptr.h> +#include <gtkmm/listbox.h> +#include <gtkmm/scrolledwindow.h> +#include <gtkmm/widget.h> +#include <glibmm/ustring.h> + +namespace turns::app::widgets +{ + struct turn_order_view : template_widget<turn_order_view, Gtk::ScrolledWindow> + { + auto constexpr inline static children = std::array{ + "view", + }; + + turn_order_view(); + + auto append(Glib::ustring name, float priority, domain::disposition disposition) -> void; + auto clear() -> void; + auto get(std::size_t index) -> Glib::RefPtr<domain::participant>; + auto remove(std::size_t index) -> void; + + + auto get_n_items() const noexcept -> unsigned int; + auto property_n_items() const -> Glib::PropertyProxy_ReadOnly<unsigned int>; + + private: + auto handle_create_row(Glib::RefPtr<Glib::Object> const item) -> Gtk::Widget *; + + Glib::RefPtr<domain::turn_order> m_model; + Gtk::ListBox * m_view; + + Glib::PropertyProxy_ReadOnly<unsigned int> m_n_items; + }; +} // namespace turns::app::widgets + +#endif
\ No newline at end of file diff --git a/app/include/turns/app/windows/main.hpp b/app/include/turns/app/windows/main.hpp index 694876e..5e13cf0 100644 --- a/app/include/turns/app/windows/main.hpp +++ b/app/include/turns/app/windows/main.hpp @@ -2,6 +2,7 @@ #define TURNS_APP_WINDOWS_MAIN_WINDOW_HPP #include "turns/domain/turn_order.hpp" +#include "turns/app/widgets/turn_order_view.hpp" #include <adwaita.h> #include <giomm/simpleaction.h> @@ -25,19 +26,15 @@ namespace turns::app::windows main(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder); private: - auto handle_create_list_row(Glib::RefPtr<Glib::Object> const item) -> Gtk::Widget *; auto handle_add_participant() -> void; auto handle_clear() -> void; auto handle_edit_participant(Glib::VariantBase param) -> void; AdwApplicationWindow * m_adw; Gtk::Widget * m_empty; - Gtk::ListBox * m_participant_list; Gtk::Stack * m_stack; AdwWindowTitle * m_title; - Gtk::ScrolledWindow * m_turn_order; - - Glib::RefPtr<domain::turn_order> m_participant_list_data; + widgets::turn_order_view * m_turn_order; Glib::PropertyProxy<Glib::ustring> m_subtitle; |
