[gnome-software] Add a simple donation button on the details page



commit e1155f1cc1d9c1a6c6bd8d7b2bebdea5a6f7daf8
Author: Richard Hughes <richard hughsie com>
Date:   Sat Aug 5 13:50:37 2017 +0100

    Add a simple donation button on the details page

 src/gs-details-page.c  |   17 +++++++++++++++++
 src/gs-details-page.ui |   15 +++++++++++++++
 2 files changed, 32 insertions(+), 0 deletions(-)
---
diff --git a/src/gs-details-page.c b/src/gs-details-page.c
index 8b882eb..76a04cb 100644
--- a/src/gs-details-page.c
+++ b/src/gs-details-page.c
@@ -80,6 +80,7 @@ struct _GsDetailsPage
        GtkWidget               *button_details_add_shortcut;
        GtkWidget               *button_details_remove_shortcut;
        GtkWidget               *button_details_website;
+       GtkWidget               *button_donate;
        GtkWidget               *button_install;
        GtkWidget               *button_remove;
        GtkWidget               *button_cancel;
@@ -670,6 +671,12 @@ gs_details_page_website_cb (GtkWidget *widget, GsDetailsPage *self)
 }
 
 static void
+gs_details_page_donate_cb (GtkWidget *widget, GsDetailsPage *self)
+{
+       gs_shell_show_uri (self->shell, gs_app_get_url (self->app, AS_URL_KIND_DONATION));
+}
+
+static void
 gs_details_page_set_description (GsDetailsPage *self, const gchar *tmp)
 {
        GtkStyleContext *style_context;
@@ -802,6 +809,12 @@ gs_details_page_refresh_all (GsDetailsPage *self)
        } else {
                gtk_widget_set_visible (self->button_details_website, FALSE);
        }
+       tmp = gs_app_get_url (self->app, AS_URL_KIND_DONATION);
+       if (tmp != NULL && tmp[0] != '\0') {
+               gtk_widget_set_visible (self->button_donate, TRUE);
+       } else {
+               gtk_widget_set_visible (self->button_donate, FALSE);
+       }
 
        /* set the developer name, falling back to the project group */
        tmp = gs_app_get_developer_name (self->app);
@@ -2185,6 +2198,9 @@ gs_details_page_setup (GsPage *page,
        g_signal_connect (self->button_details_website, "clicked",
                          G_CALLBACK (gs_details_page_website_cb),
                          self);
+       g_signal_connect (self->button_donate, "clicked",
+                         G_CALLBACK (gs_details_page_donate_cb),
+                         self);
        g_signal_connect (self->button_details_license_free, "clicked",
                          G_CALLBACK (gs_details_page_license_free_cb),
                          self);
@@ -2254,6 +2270,7 @@ gs_details_page_class_init (GsDetailsPageClass *klass)
        gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, button_details_add_shortcut);
        gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, button_details_remove_shortcut);
        gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, button_details_website);
+       gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, button_donate);
        gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, button_install);
        gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, button_remove);
        gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, button_cancel);
diff --git a/src/gs-details-page.ui b/src/gs-details-page.ui
index cacd1a0..36a43b0 100644
--- a/src/gs-details-page.ui
+++ b/src/gs-details-page.ui
@@ -574,6 +574,21 @@
                                 <property name="position">0</property>
                               </packing>
                             </child>
+                            <child>
+                              <object class="GtkButton" id="button_donate">
+                                <property name="label" translatable="yes">_Donate</property>
+                                <property name="width_request">150</property>
+                                <property name="visible">False</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
                           </object>
                           <packing>
                             <property name="expand">False</property>


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