[recipes] cooking page: Manage sensivitiy of buttons



commit 283a822109dd2b0bd1986045512094f5cddc83d1
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Feb 7 23:19:30 2017 -0500

    cooking page: Manage sensivitiy of buttons
    
    We should make buttons insensitive when they don't do anything.

 src/gr-cooking-page.c  |   21 +++++++++++++++++++++
 src/gr-cooking-page.ui |    4 ++--
 2 files changed, 23 insertions(+), 2 deletions(-)
---
diff --git a/src/gr-cooking-page.c b/src/gr-cooking-page.c
index afcf82e..bc46517 100644
--- a/src/gr-cooking-page.c
+++ b/src/gr-cooking-page.c
@@ -41,6 +41,8 @@ struct _GrCookingPage
         GtkWidget *prev_revealer;
         GtkWidget *close_revealer;
         GtkWidget *cooking_view;
+        GtkWidget *prev_step_button;
+        GtkWidget *next_step_button;
 
         GrRecipe *recipe;
 
@@ -127,6 +129,19 @@ set_cooking_overlay_count (int count)
 }
 
 static void
+update_steppers (GrCookingPage *page)
+{
+        int step;
+        int n_steps;
+
+        step = gr_cooking_view_get_step (GR_COOKING_VIEW (page->cooking_view));
+        n_steps = gr_cooking_view_get_n_steps (GR_COOKING_VIEW (page->cooking_view));
+
+        gtk_widget_set_sensitive (page->prev_step_button, step - 1 >= 0);
+        gtk_widget_set_sensitive (page->next_step_button, step + 1 <= n_steps - 1);
+}
+
+static void
 set_cooking (GrCookingPage *page,
              gboolean       cooking)
 {
@@ -154,6 +169,7 @@ set_cooking (GrCookingPage *page,
                 }
 
                 gr_cooking_view_set_step (GR_COOKING_VIEW (page->cooking_view), 0);
+                update_steppers (page);
 
                 gr_window_set_fullscreen (GR_WINDOW (window), TRUE);
         }
@@ -164,6 +180,7 @@ set_cooking (GrCookingPage *page,
                 }
 
                 gr_window_show_recipe (GR_WINDOW (window), page->recipe);
+                update_steppers (page);
 
                 gr_window_set_fullscreen (GR_WINDOW (window), FALSE);
         }
@@ -182,6 +199,7 @@ prev_step (GrCookingPage *page)
 
         step = gr_cooking_view_get_step (GR_COOKING_VIEW (page->cooking_view));
         gr_cooking_view_set_step (GR_COOKING_VIEW (page->cooking_view), step - 1);
+        update_steppers (page);
 }
 
 static void
@@ -191,6 +209,7 @@ next_step (GrCookingPage *page)
 
         step = gr_cooking_view_get_step (GR_COOKING_VIEW (page->cooking_view));
         gr_cooking_view_set_step (GR_COOKING_VIEW (page->cooking_view), step + 1);
+        update_steppers (page);
 }
 
 
@@ -371,6 +390,8 @@ gr_cooking_page_class_init (GrCookingPageClass *klass)
         gtk_widget_class_bind_template_child (widget_class, GrCookingPage, next_revealer);
         gtk_widget_class_bind_template_child (widget_class, GrCookingPage, close_revealer);
         gtk_widget_class_bind_template_child (widget_class, GrCookingPage, event_box);
+        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_callback (widget_class, prev_step);
         gtk_widget_class_bind_template_callback (widget_class, next_step);
diff --git a/src/gr-cooking-page.ui b/src/gr-cooking-page.ui
index 12ba9d9..371c0eb 100644
--- a/src/gr-cooking-page.ui
+++ b/src/gr-cooking-page.ui
@@ -17,7 +17,7 @@
               <class name="osd"/>
             </style>
             <child>
-              <object class="GtkButton">
+              <object class="GtkButton" id="prev_step_button">
                 <property name="visible">1</property>
                 <signal name="clicked" handler="prev_step" swapped="yes"/>
                 <style>
@@ -67,7 +67,7 @@
             <property name="valign">center</property>
             <property name="transition-type">crossfade</property>
             <child>
-              <object class="GtkButton">
+              <object class="GtkButton" id="next_step_button">
                 <property name="visible">1</property>
                 <signal name="clicked" handler="next_step" swapped="yes"/>
                 <style>


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