[recipes] Add a way to show notifications on the cooking page



commit 37908df4da17d506ed098057d8315aa03b91dc97
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Feb 19 09:29:47 2017 -0500

    Add a way to show notifications on the cooking page
    
    This will be used for timers that expire while invisible.

 src/gr-cooking-page.c  |   20 +++++++++++++++++++-
 src/gr-cooking-page.h  |    3 +++
 src/gr-cooking-page.ui |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 70 insertions(+), 1 deletions(-)
---
diff --git a/src/gr-cooking-page.c b/src/gr-cooking-page.c
index 0f48b1f..f4e9081 100644
--- a/src/gr-cooking-page.c
+++ b/src/gr-cooking-page.c
@@ -44,6 +44,8 @@ struct _GrCookingPage
         GtkWidget *prev_step_button;
         GtkWidget *next_step_button;
         GtkWidget *done_button;
+        GtkWidget *notification_revealer;
+        GtkWidget *notification_label;
 
         GrRecipe *recipe;
 
@@ -386,6 +388,20 @@ gr_cooking_page_handle_event (GrCookingPage *page,
         return GDK_EVENT_PROPAGATE;
 }
 
+void
+gr_cooking_page_show_notification (GrCookingPage *page,
+                                   const char    *text)
+{
+        gtk_label_set_label (GTK_LABEL (page->notification_label), text);
+        gtk_revealer_set_reveal_child (GTK_REVEALER (page->notification_revealer), TRUE);
+}
+
+static void
+close_notification (GrCookingPage *page)
+{
+        gtk_revealer_set_reveal_child (GTK_REVEALER (page->notification_revealer), FALSE);
+}
+
 static void
 gr_cooking_page_class_init (GrCookingPageClass *klass)
 {
@@ -406,11 +422,14 @@ gr_cooking_page_class_init (GrCookingPageClass *klass)
         gtk_widget_class_bind_template_child (widget_class, GrCookingPage, prev_step_button);
         gtk_widget_class_bind_template_child (widget_class, GrCookingPage, next_step_button);
         gtk_widget_class_bind_template_child (widget_class, GrCookingPage, done_button);
+        gtk_widget_class_bind_template_child (widget_class, GrCookingPage, notification_revealer);
+        gtk_widget_class_bind_template_child (widget_class, GrCookingPage, notification_label);
 
         gtk_widget_class_bind_template_callback (widget_class, prev_step);
         gtk_widget_class_bind_template_callback (widget_class, next_step);
         gtk_widget_class_bind_template_callback (widget_class, stop_cooking);
         gtk_widget_class_bind_template_callback (widget_class, motion_notify);
+        gtk_widget_class_bind_template_callback (widget_class, close_notification);
 }
 
 void
@@ -428,4 +447,3 @@ gr_cooking_page_set_recipe (GrCookingPage *page,
         gr_cooking_view_set_images (GR_COOKING_VIEW (page->cooking_view), images, 0);
         gr_cooking_view_set_instructions (GR_COOKING_VIEW (page->cooking_view), instructions);
 }
-
diff --git a/src/gr-cooking-page.h b/src/gr-cooking-page.h
index 264c243..0b3b2ee 100644
--- a/src/gr-cooking-page.h
+++ b/src/gr-cooking-page.h
@@ -38,5 +38,8 @@ void           gr_cooking_page_start_cooking (GrCookingPage *page);
 gboolean       gr_cooking_page_handle_event (GrCookingPage *page,
                                              GdkEvent      *event);
 
+void           gr_cooking_page_show_notification (GrCookingPage *page,
+                                                  const char    *text);
+
 G_END_DECLS
 
diff --git a/src/gr-cooking-page.ui b/src/gr-cooking-page.ui
index b0d09e0..ad6a3bf 100644
--- a/src/gr-cooking-page.ui
+++ b/src/gr-cooking-page.ui
@@ -36,6 +36,54 @@
           </object>
         </child>
         <child type="overlay">
+          <object class="GtkRevealer" id="notification_revealer">
+            <property name="visible">1</property>
+            <property name="halign">center</property>
+            <property name="valign">start</property>
+            <child>
+              <object class="GtkFrame">
+                <property name="visible">1</property>
+                <style>
+                  <class name="app-notification"/>
+                </style>
+                <child>
+                  <object class="GtkBox">
+                    <property name="visible">1</property>
+                    <child>
+                      <object class="GtkLabel" id="notification_label">
+                        <property name="visible">1</property>
+                        <property name="halign">start</property>
+                        <property name="label">Time is up!</property>
+                        <style>
+                          <class name="notification-label"/>
+                        </style>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkButton">
+                        <property name="visible">1</property>
+                        <property name="focus-on-click">0</property>
+                        <property name="relief">none</property>
+                        <signal name="clicked" handler="close_notification" swapped="yes"/>
+                        <style>
+                          <class name="image-button"/>
+                        </style>
+                        <child>
+                          <object class="GtkImage">
+                            <property name="visible">1</property>
+                            <property name="icon-name">window-close-symbolic</property>
+                            <property name="icon-size">1</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child type="overlay">
           <object class="GtkRevealer" id="close_revealer">
             <property name="visible">1</property>
             <property name="halign">end</property>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]