summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2024-07-14 21:30:56 +0200
committerFelix Morgner <felix.morgner@gmail.com>2024-07-14 21:33:04 +0200
commit05da3897f944f5775d25de2136ea985d4b0078eb (patch)
treefd817901681a745f75234979168f391310141797 /app
parentd462e0e4d25d595175160c407e02a84155441983 (diff)
downloadturns-05da3897f944f5775d25de2136ea985d4b0078eb.tar.xz
turns-05da3897f944f5775d25de2136ea985d4b0078eb.zip
app/ui: show status view when turn order is empty
Diffstat (limited to 'app')
-rw-r--r--app/include/turns/app/windows/main.hpp9
-rw-r--r--app/src/windows/main.cpp23
2 files changed, 23 insertions, 9 deletions
diff --git a/app/include/turns/app/windows/main.hpp b/app/include/turns/app/windows/main.hpp
index d98e1a8..00844ac 100644
--- a/app/include/turns/app/windows/main.hpp
+++ b/app/include/turns/app/windows/main.hpp
@@ -13,6 +13,8 @@
#include <gtkmm/listbox.h>
#include <gtkmm/menubutton.h>
#include <gtkmm/widget.h>
+#include <gtkmm/stack.h>
+#include <gtkmm/scrolledwindow.h>
namespace turns::app::windows
{
@@ -23,13 +25,14 @@ namespace turns::app::windows
private:
auto handle_create_list_row(Glib::RefPtr<Glib::Object> const item) -> Gtk::Widget *;
- auto handle_create_participant() -> void;
+ auto handle_add_participant() -> void;
- Gtk::Button * m_add_participant;
AdwApplicationWindow * m_adw;
- Gtk::MenuButton * m_open_main_menu;
+ 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_participants;
};
diff --git a/app/src/windows/main.cpp b/app/src/windows/main.cpp
index f378fc7..314b8cc 100644
--- a/app/src/windows/main.cpp
+++ b/app/src/windows/main.cpp
@@ -16,19 +16,30 @@ namespace turns::app::windows
main::main(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder)
: Gtk::ApplicationWindow{base}
- , m_add_participant{builder->get_widget<Gtk::Button>("add_participant")}
, m_adw{ADW_APPLICATION_WINDOW(gobj())}
- , m_open_main_menu{builder->get_widget<Gtk::MenuButton>("open_main_menu")}
+ , m_empty(builder->get_widget<Gtk::Widget>("empty"))
, m_participant_list{builder->get_widget<Gtk::ListBox>("participant_list")}
+ , m_stack{builder->get_widget<Gtk::Stack>("stack")}
, m_title(ADW_WINDOW_TITLE(builder->get_widget<Gtk::Widget>("title")->gobj()))
+ , m_turn_order{builder->get_widget<Gtk::ScrolledWindow>("turn_order")}
, m_participants{domain::turn_order::create()}
{
- m_add_participant->set_tooltip_text(_(lang::add_participant));
- m_open_main_menu->set_tooltip_text(_(lang::main_menu));
adw_window_title_set_subtitle(m_title, _(lang::no_active_turn_order));
- m_add_participant->signal_clicked().connect(sigc::mem_fun(*this, &main::handle_create_participant));
+ m_stack->set_visible_child(*m_empty);
+ m_participants->property_n_items().signal_changed().connect([this] {
+ if (m_participants->get_n_items())
+ {
+ m_stack->set_visible_child(*m_turn_order);
+ }
+ else
+ {
+ m_stack->set_visible_child(*m_empty);
+ }
+ });
m_participant_list->bind_model(m_participants, sigc::mem_fun(*this, &main::handle_create_list_row));
+
+ add_action("add_participant", sigc::mem_fun(*this, &main::handle_add_participant));
}
auto main::handle_create_list_row(Glib::RefPtr<Glib::Object> const item) -> Gtk::Widget *
@@ -39,7 +50,7 @@ namespace turns::app::windows
return widget;
}
- auto main::handle_create_participant() -> void
+ auto main::handle_add_participant() -> void
{
auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/create_participant.ui");
auto dialog = Gtk::Builder::get_widget_derived<windows::create_participant>(builder, "create_participant_dialog");