[gnome-control-center/T20771: 32/44] info: add link for license attribution document
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center/T20771: 32/44] info: add link for license attribution document
- Date: Tue, 23 Jan 2018 21:09:15 +0000 (UTC)
commit b6a779b6aa3840e96a9fd7f82ece129c1b69b40e
Author: Cosimo Cecchi <cosimo endlessm com>
Date: Fri Jun 20 18:05:12 2014 -0700
info: add link for license attribution document
[endlessm/eos-shell#457]
panels/info/cc-info-overview-panel.c | 71 ++++++++++++++++++++++++++++++++++
panels/info/info-overview.ui | 23 +++++++++++
2 files changed, 94 insertions(+), 0 deletions(-)
---
diff --git a/panels/info/cc-info-overview-panel.c b/panels/info/cc-info-overview-panel.c
index 3af58be..49356ab 100644
--- a/panels/info/cc-info-overview-panel.c
+++ b/panels/info/cc-info-overview-panel.c
@@ -108,6 +108,76 @@ typedef struct
G_DEFINE_TYPE_WITH_PRIVATE (CcInfoOverviewPanel, cc_info_overview_panel, CC_TYPE_PANEL)
+static gboolean
+on_attribution_label_link (GtkLabel *label,
+ gchar *uri,
+ CcInfoOverviewPanel *self)
+{
+ g_autoptr(GError) error = NULL;
+ const gchar * const * languages;
+ const gchar * const * data_dirs;
+ const gchar *language;
+ g_autofree gchar *pdf_uri = NULL;
+ g_autofree gchar *path = NULL;
+ gint i, j;
+ gboolean found = FALSE;
+
+ if (g_strcmp0 (uri, "attribution-link") != 0)
+ return FALSE;
+
+ data_dirs = g_get_system_data_dirs ();
+ languages = g_get_language_names ();
+ path = NULL;
+
+ for (i = 0; languages[i] != NULL; i++)
+ {
+ language = languages[i];
+
+ for (j = 0; data_dirs[j] != NULL; j++)
+ {
+ path = g_build_filename (data_dirs[j],
+ "eos-license-service",
+ "terms",
+ language,
+ "Endless-Terms-of-Use.pdf",
+ NULL);
+
+ if (g_file_test (path, G_FILE_TEST_EXISTS))
+ {
+ found = TRUE;
+ break;
+ }
+
+ g_free (path);
+ path = NULL;
+ }
+
+ if (found)
+ break;
+ }
+
+ if (!found)
+ {
+ g_warning ("Unable to find terms and conditions PDF on the system");
+ return TRUE;
+ }
+
+ pdf_uri = g_filename_to_uri (path, NULL, &error);
+
+ if (error)
+ {
+ g_warning ("Unable to construct terms and conditions PDF uri: %s", error->message);
+ return TRUE;
+ }
+
+ gtk_show_uri (NULL, pdf_uri, gtk_get_current_event_time (), &error);
+
+ if (error)
+ g_warning ("Unable to display terms and conditions PDF: %s", error->message);
+
+ return TRUE;
+}
+
static void
version_start_element_handler (GMarkupParseContext *ctx,
const char *element_name,
@@ -928,6 +998,7 @@ cc_info_overview_panel_class_init (CcInfoOverviewPanelClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, label8);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, grid1);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, label18);
+ gtk_widget_class_bind_template_callback (widget_class, on_attribution_label_link);
}
static void
diff --git a/panels/info/info-overview.ui b/panels/info/info-overview.ui
index 219a83c..a0baa29 100644
--- a/panels/info/info-overview.ui
+++ b/panels/info/info-overview.ui
@@ -301,6 +301,29 @@
</packing>
</child>
<child>
+ <object class="GtkLabel" id="attribution_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <property name="margin_left">22</property>
+ <property name="label" translatable="yes"><a href='attribution-link'>Endless Terms of
Use</a></property>
+ <signal name="activate-link" handler="on_attribution_label_link" object="CcInfoOverviewPanel"
swapped="no" />
+ <attributes>
+ <attribute name="scale" value="0.83"/>
+ </attributes>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]