diff --git a/client/src/activities_view.vala b/client/src/activities_view.vala index a491eaa..4867c94 100644 --- a/client/src/activities_view.vala +++ b/client/src/activities_view.vala @@ -1,7 +1,10 @@ namespace StudySystemClient { public class ActivitiesView : Gtk.Box { + private Client client; + public ActivitiesView(Client client) { margin_top = margin_bottom = margin_start = margin_end = 0; + this.client = client; var scrolled_window = new Gtk.ScrolledWindow(); scrolled_window.hscrollbar_policy = Gtk.PolicyType.NEVER; @@ -24,17 +27,31 @@ namespace StudySystemClient { { "Physics", ActivityType.EXERCISES }, }; foreach (var activity in activities) { - var card = new ActivityCard(client, activity); + var card = new ActivityCard(activity); + card.session_logged.connect(log_session); card_container.append(card); } scrolled_window.set_child(card_container); this.append(scrolled_window); } + + private async void log_session(string subject, ActivityType type, + int minutes) { + try { + yield client.log_session(subject, type, minutes); + stderr.printf("Successfully logged session\n"); + } catch (ClientError e) { + stderr.printf("Error logging session: %s\n", e.message); + } + } } private class ActivityCard : Gtk.Frame { - public ActivityCard(Client client, Activity activity) { + public signal void session_logged(string subject, ActivityType type, + int minutes); + + public ActivityCard(Activity activity) { add_css_class("card"); var content = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 12); @@ -63,21 +80,23 @@ namespace StudySystemClient { set_child(content); - var log_session_popover = new LogSessionPopover(client); + var log_session_popover = new LogSessionPopover(); log_session_popover.set_parent(button); button.clicked.connect(() => log_session_popover.popup()); + log_session_popover.session_logged.connect((minutes) => { + session_logged(activity.subject, activity.type, minutes); + }); } } private class LogSessionPopover : Gtk.Popover { + public signal void session_logged(int minutes); + private const int DEFAULT_LENGTH = 30; private Gtk.SpinButton input; - private Client client; - - public LogSessionPopover(Client client) { - this.client = client; + public LogSessionPopover() { var content = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 6); var label = new Gtk.Label("Minutes"); @@ -102,16 +121,10 @@ namespace StudySystemClient { closed.connect(reset); } - private async void submit() { + private void submit() { + session_logged((int)input.value); reset(); popdown(); - - try { - yield client.ping(); - stderr.printf("Successfully pinged server\n"); - } catch (ClientError e) { - stderr.printf("Error pinging server: %s\n", e.message); - } } private void reset() {