[recipes/todoist: 10/12] In-App Notification for after shopping list had been exported to Todoist
- From: Ekta Nandwani <ektan src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [recipes/todoist: 10/12] In-App Notification for after shopping list had been exported to Todoist
- Date: Fri, 27 Oct 2017 15:07:17 +0000 (UTC)
commit 651dd1c1119ce5fed5ab080c63a520e6de977d84
Author: Ekta Nandwani <mailnandwaniekta gmail com>
Date: Fri Aug 25 02:32:19 2017 +0530
In-App Notification for after shopping list had been exported to Todoist
src/gr-shopping-list-exporter.c | 2 +
src/gr-window.c | 38 +++++++++++++++++++++++++++++
src/gr-window.h | 1 +
src/gr-window.ui | 50 +++++++++++++++++++++++++++++++++++++++
4 files changed, 91 insertions(+), 0 deletions(-)
---
diff --git a/src/gr-shopping-list-exporter.c b/src/gr-shopping-list-exporter.c
index 6e73867..26d3ba5 100644
--- a/src/gr-shopping-list-exporter.c
+++ b/src/gr-shopping-list-exporter.c
@@ -33,6 +33,7 @@
#include "gr-shopping-page.h"
#include "gr-shopping-list-formatter.h"
#include "gr-mail.h"
+#include "gr-window.h"
#define TODOIST_URL "https://todoist.com/API/v7/sync"
@@ -323,6 +324,7 @@ export_shopping_list_callback (RestProxyCall *call,
g_object_unref (parser);
if (exporter->dialog)
close_dialog (exporter);
+ gr_window_confirm_shopping_exported (GR_WINDOW (exporter->window));
}
static void
diff --git a/src/gr-window.c b/src/gr-window.c
index 584c27b..926f6af 100644
--- a/src/gr-window.c
+++ b/src/gr-window.c
@@ -100,6 +100,9 @@ struct _GrWindow
GList *shopping_done_list;
char **removed_ingredients;
+ GtkWidget *export_done_revealer;
+ guint export_done_timeout_id;
+
GObject *file_chooser;
GrRecipeImporter *importer;
GrRecipeExporter *exporter;
@@ -602,6 +605,10 @@ gr_window_finalize (GObject *object)
g_source_remove (self->shopping_done_timeout_id);
self->shopping_done_timeout_id = 0;
}
+ if (self->export_done_timeout_id) {
+ g_source_remove (self->export_done_timeout_id);
+ self->export_done_timeout_id = 0;
+ }
g_list_free (self->dialogs);
@@ -876,6 +883,35 @@ done_shopping (GrWindow *window)
}
}
+
+static void
+close_export_done (GrWindow *window)
+{
+ if (window->export_done_timeout_id) {
+ g_source_remove (window->export_done_timeout_id);
+ window->export_done_timeout_id = 0;
+ }
+
+ gtk_revealer_set_reveal_child (GTK_REVEALER (window->export_done_revealer), FALSE);
+}
+
+static gboolean
+export_done_timeout (gpointer data)
+{
+ GrWindow *window = data;
+
+ close_export_done (window);
+
+ return G_SOURCE_REMOVE;
+}
+
+void
+gr_window_confirm_shopping_exported (GrWindow *window)
+{
+ gtk_revealer_set_reveal_child (GTK_REVEALER (window->export_done_revealer), TRUE);
+ window->export_done_timeout_id = g_timeout_add_seconds (10, export_done_timeout, window);
+}
+
static void
make_save_sensitive (GrEditPage *edit_page,
GParamSpec *pspec,
@@ -960,6 +996,7 @@ gr_window_class_init (GrWindowClass *klass)
gtk_widget_class_bind_template_child (widget_class, GrWindow, remind_label);
gtk_widget_class_bind_template_child (widget_class, GrWindow, shopping_added_revealer);
gtk_widget_class_bind_template_child (widget_class, GrWindow, shopping_done_revealer);
+ gtk_widget_class_bind_template_child (widget_class, GrWindow, export_done_revealer);
gtk_widget_class_bind_template_child (widget_class, GrWindow, sort_by_label);
gtk_widget_class_bind_template_child (widget_class, GrWindow, sort_by_name_button);
gtk_widget_class_bind_template_child (widget_class, GrWindow, sort_by_recency_button);
@@ -990,6 +1027,7 @@ gr_window_class_init (GrWindowClass *klass)
gtk_widget_class_bind_template_callback (widget_class, back_to_shopping);
gtk_widget_class_bind_template_callback (widget_class, make_save_sensitive);
gtk_widget_class_bind_template_callback (widget_class, sort_clicked);
+ gtk_widget_class_bind_template_callback (widget_class, close_export_done);
}
static GtkClipboard *
diff --git a/src/gr-window.h b/src/gr-window.h
index 8120fae..283e71c 100644
--- a/src/gr-window.h
+++ b/src/gr-window.h
@@ -84,5 +84,6 @@ void gr_window_save_all (GrWindow *window);
void gr_window_timer_expired (GrWindow *window,
GrRecipe *recipe,
int step);
+void gr_window_confirm_shopping_exported (GrWindow *window);
G_END_DECLS
diff --git a/src/gr-window.ui b/src/gr-window.ui
index 0bac3f7..3c51deb 100644
--- a/src/gr-window.ui
+++ b/src/gr-window.ui
@@ -468,6 +468,56 @@
</child>
</object>
</child>
+ <child type="overlay">
+ <object class="GtkRevealer" id="export_done_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>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">1</property>
+ <property name="hexpand">1</property>
+ <property name="halign">center</property>
+ <property name="label" translatable="yes">Shopping List has been exported to
Todoist</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_export_done" 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>
<object class="GtkStack" id="main_stack">
<property name="visible">1</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]