[gitg] Make use of gravatar optional and a preference setting
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gitg] Make use of gravatar optional and a preference setting
- Date: Fri, 31 Jul 2015 06:51:04 +0000 (UTC)
commit bb22c056722473c2b17138b842bac2641da843f4
Author: Jesse van den Kieboom <jessevdk gnome org>
Date: Fri Jul 31 08:47:59 2015 +0200
Make use of gravatar optional and a preference setting
https://bugzilla.gnome.org/show_bug.cgi?id=744159
data/org.gnome.gitg.gschema.xml.in.in | 7 ++
gitg/commit/gitg-commit-dialog.vala | 62 +++++++++++----
gitg/commit/gitg-commit.vala | 27 +++++--
gitg/preferences/gitg-preferences-interface.vala | 8 ++
gitg/resources/ui/gitg-preferences-interface.ui | 89 ++++++++++++----------
libgitg/gitg-diff-view.vala | 17 ++++
libgitg/resources/ui/diff-view/diff-view.js | 69 +++++++++--------
plugins/diff/gitg-diff.vala | 8 ++
8 files changed, 189 insertions(+), 98 deletions(-)
---
diff --git a/data/org.gnome.gitg.gschema.xml.in.in b/data/org.gnome.gitg.gschema.xml.in.in
index 624fda8..95a9c55 100644
--- a/data/org.gnome.gitg.gschema.xml.in.in
+++ b/data/org.gnome.gitg.gschema.xml.in.in
@@ -35,6 +35,13 @@
The activity which gitg activates by default when first launched.
</_description>
</key>
+ <key name="use-gravatar" type="b">
+ <default>true</default>
+ <_summary>Use Gravatar</_summary>
+ <_description>
+ Enable the use of gravatar to display user avatars.
+ </_description>
+ </key>
</schema>
<schema gettext-domain="@GETTEXT_PACKAGE@" id="org.gnome.gitg.preferences.history"
path="/org/gnome/gitg/preferences/history/">
<key name="collapse-inactive-lanes" type="i">
diff --git a/gitg/commit/gitg-commit-dialog.vala b/gitg/commit/gitg-commit-dialog.vala
index ea19602..80d8730 100644
--- a/gitg/commit/gitg-commit-dialog.vala
+++ b/gitg/commit/gitg-commit-dialog.vala
@@ -275,6 +275,21 @@ class Dialog : Gtk.Dialog
}
}
+ private bool d_use_gravatar;
+
+ public bool use_gravatar
+ {
+ get { return d_use_gravatar; }
+ set
+ {
+ if (d_use_gravatar != value)
+ {
+ d_use_gravatar = value;
+ load_author_info();
+ }
+ }
+ }
+
private void load_author_info()
{
if (d_cancel_avatar != null)
@@ -324,26 +339,33 @@ class Dialog : Gtk.Dialog
d_label_date.halign = Gtk.Align.START;
}
- var ac = Gitg.AvatarCache.default();
- d_cancel_avatar = new Cancellable();
+ if (use_gravatar)
+ {
+ var ac = Gitg.AvatarCache.default();
+ d_cancel_avatar = new Cancellable();
- ac.load.begin(d_author.get_email(), d_cancel_avatar, (obj, res) => {
- var pixbuf = ac.load.end(res);
+ ac.load.begin(d_author.get_email(), d_cancel_avatar, (obj, res) => {
+ var pixbuf = ac.load.end(res);
- if (d_cancel_avatar.is_cancelled())
- {
- return;
- }
+ if (d_cancel_avatar.is_cancelled())
+ {
+ return;
+ }
- if (pixbuf != null)
- {
- d_image_avatar.set_from_pixbuf(pixbuf);
- }
- else
- {
- d_image_avatar.set_from_icon_name("avatar-default-symbolic",
Gtk.IconSize.DIALOG);
- }
- });
+ if (pixbuf != null)
+ {
+ d_image_avatar.set_from_pixbuf(pixbuf);
+ }
+ else
+ {
+ d_image_avatar.set_from_icon_name("avatar-default-symbolic",
Gtk.IconSize.DIALOG);
+ }
+ });
+ }
+ else
+ {
+ d_image_avatar.set_from_icon_name("avatar-default-symbolic", Gtk.IconSize.DIALOG);
+ }
}
protected override void destroy()
@@ -431,6 +453,12 @@ class Dialog : Gtk.Dialog
"spell-checking-language",
SettingsBindFlags.GET | SettingsBindFlags.SET);
+ var interface_settings = new Settings("org.gnome.gitg.preferences.interface");
+ interface_settings.bind("use-gravatar",
+ this,
+ "use-gravatar",
+ SettingsBindFlags.GET);
+
d_constructed = true;
init_message_area();
diff --git a/gitg/commit/gitg-commit.vala b/gitg/commit/gitg-commit.vala
index a315c80..d0e0830 100644
--- a/gitg/commit/gitg-commit.vala
+++ b/gitg/commit/gitg-commit.vala
@@ -721,16 +721,19 @@ namespace GitgCommit
selected_paths.add(item.path);
}
- // Preload author avatar
- try
+ if (d_main.diff_view.use_gravatar)
{
- var author = get_signature("AUTHOR");
- var ac = Gitg.AvatarCache.default();
+ // Preload author avatar
+ try
+ {
+ var author = get_signature("AUTHOR");
+ var ac = Gitg.AvatarCache.default();
- ac.load.begin(author.get_email(), null, (obj, res) => {
- ac.load.end(res);
- });
- } catch {}
+ ac.load.begin(author.get_email(), null, (obj, res) => {
+ ac.load.end(res);
+ });
+ } catch {}
+ }
var stage = repository.stage;
@@ -1738,6 +1741,14 @@ namespace GitgCommit
SettingsBindFlags.GET |
SettingsBindFlags.SET);
+ settings = new Settings("org.gnome.gitg.preferences.interface");
+
+ settings.bind("use-gravatar",
+ d_main.diff_view,
+ "use-gravatar",
+ SettingsBindFlags.GET |
+ SettingsBindFlags.SET);
+
d_main.diff_view.bind_property("has-selection",
d_main.button_stage,
"sensitive",
diff --git a/gitg/preferences/gitg-preferences-interface.vala
b/gitg/preferences/gitg-preferences-interface.vala
index 1588b8a..98b3239 100644
--- a/gitg/preferences/gitg-preferences-interface.vala
+++ b/gitg/preferences/gitg-preferences-interface.vala
@@ -34,6 +34,9 @@ public class PreferencesInterface : Gtk.Grid, GitgExt.Preferences
[GtkChild (name = "default_activity")]
private Gtk.ComboBox d_default_activity;
+ [GtkChild (name = "gravatar_enabled")]
+ private Gtk.CheckButton d_gravatar_enabled;
+
construct
{
d_settings = new Settings("org.gnome.gitg.preferences.interface");
@@ -58,6 +61,11 @@ public class PreferencesInterface : Gtk.Grid, GitgExt.Preferences
d_default_activity,
"active-id",
SettingsBindFlags.GET | SettingsBindFlags.SET);
+
+ d_settings.bind("use-gravatar",
+ d_gravatar_enabled,
+ "active",
+ SettingsBindFlags.GET | SettingsBindFlags.SET);
}
public override void dispose()
diff --git a/gitg/resources/ui/gitg-preferences-interface.ui b/gitg/resources/ui/gitg-preferences-interface.ui
index d07b4d4..c0e1f95 100644
--- a/gitg/resources/ui/gitg-preferences-interface.ui
+++ b/gitg/resources/ui/gitg-preferences-interface.ui
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
<interface>
- <!-- interface-requires gtk+ 3.12 -->
+ <requires lib="gtk+" version="3.12"/>
<template class="GitgPreferencesInterface" parent="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_focus">False</property>
- <property name="is_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="border_width">12</property>
@@ -15,16 +14,12 @@
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_focus">False</property>
- <property name="is_focus">False</property>
<property name="hexpand">True</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_focus">False</property>
- <property name="is_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Startup</property>
<attributes>
@@ -34,70 +29,53 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_focus">False</property>
- <property name="is_focus">False</property>
+ <property name="margin_start">12</property>
<property name="hexpand">True</property>
<property name="row_spacing">6</property>
<property name="column_spacing">6</property>
- <property name="margin_start">12</property>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_focus">False</property>
- <property name="is_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Start with activity:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="default_activity">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="has_focus">False</property>
- <property name="is_focus">False</property>
- <property name="receives_default">False</property>
<property name="halign">start</property>
<items>
- <item translatable="yes" id="history">History</item>
- <item translatable="yes" id="commit">Commit</item>
+ <item id="history" translatable="yes">History</item>
+ <item id="commit" translatable="yes">Commit</item>
</items>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_focus">False</property>
- <property name="is_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Layout</property>
<attributes>
@@ -107,27 +85,21 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_focus">False</property>
- <property name="is_focus">False</property>
+ <property name="margin_start">12</property>
<property name="hexpand">True</property>
<property name="row_spacing">6</property>
- <property name="margin_start">12</property>
<child>
<object class="GtkCheckButton" id="horizontal_layout_enabled">
<property name="label" translatable="yes">Use horizontal layout</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="has_focus">False</property>
- <property name="is_focus">False</property>
<property name="receives_default">False</property>
<property name="halign">start</property>
<property name="draw_indicator">True</property>
@@ -135,24 +107,61 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Avatars</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="hexpand">True</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="gravatar_enabled">
+ <property name="label" translatable="yes">Use gravatar service to provide user
avatars</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
</template>
diff --git a/libgitg/gitg-diff-view.vala b/libgitg/gitg-diff-view.vala
index da05bb3..3372f61 100644
--- a/libgitg/gitg-diff-view.vala
+++ b/libgitg/gitg-diff-view.vala
@@ -136,6 +136,22 @@ namespace Gitg
public bool unstaged { get; set; default = false; }
public bool show_parents { get; set; default = false; }
+ private bool d_use_gravatar;
+
+ public bool use_gravatar
+ {
+ get { return d_use_gravatar; }
+ construct set
+ {
+ if (d_use_gravatar != value)
+ {
+ d_use_gravatar = value;
+ options_changed();
+ }
+ }
+ default = true;
+ }
+
int d_tab_width;
public int tab_width
@@ -242,6 +258,7 @@ namespace Gitg
o.set_boolean_member("changes_inline", changes_inline);
o.set_boolean_member("show_parents", show_parents);
o.set_string_member("parent", d_parent);
+ o.set_boolean_member("use_gravatar", use_gravatar);
var strings = new Json.Object();
diff --git a/libgitg/resources/ui/diff-view/diff-view.js b/libgitg/resources/ui/diff-view/diff-view.js
index b5c5b72..a1ca965 100644
--- a/libgitg/resources/ui/diff-view/diff-view.js
+++ b/libgitg/resources/ui/diff-view/diff-view.js
@@ -22,6 +22,7 @@ var default_settings = {
staged: false,
unstaged: false,
show_parents: false,
+ use_gravatar: true,
strings: {
stage: 'stage',
unstage: 'unstage',
@@ -91,7 +92,7 @@ function write_avatar(avatar, commit)
avatarLoader.cancelled = true;
}
- if (h in avatar_cache)
+ if (h in avatar_cache && settings.use_gravatar)
{
avc = avatar_cache[h];
@@ -103,40 +104,42 @@ function write_avatar(avatar, commit)
return;
}
- avatarLoader = {
- image: $('<img/>'),
- cancelled: false
- };
-
- var gravatar = 'http://www.gravatar.com/avatar/' + h + '?d=404&s=60';
-
- avc = 'gitg-diff:/icon/avatar-default-symbolic?size=60';
-
+ var avc = 'gitg-diff:/icon/avatar-default-symbolic?size=60';
avatar.attr('src', avc);
- avatarLoader.image.on('load', function () {
- if (this.cancelled)
- {
- return;
- }
+ if (settings.use_gravatar)
+ {
+ avatarLoader = {
+ image: $('<img/>'),
+ cancelled: false
+ };
+
+ var gravatar = 'http://www.gravatar.com/avatar/' + h + '?d=404&s=60';
- avatar_cache[h] = gravatar;
- avatar.attr('src', gravatar);
+ avatarLoader.image.on('load', function () {
+ if (this.cancelled)
+ {
+ return;
+ }
- avatarLoader = null;
- }.bind(avatarLoader));
+ avatar_cache[h] = gravatar;
+ avatar.attr('src', gravatar);
- avatarLoader.image.on('error', function () {
- if (this.cancelled)
- {
- return;
- }
+ avatarLoader = null;
+ }.bind(avatarLoader));
- avatar_cache[h] = avc;
- avatarLoader = null;
- }.bind(avatarLoader));
+ avatarLoader.image.on('error', function () {
+ if (this.cancelled)
+ {
+ return;
+ }
- avatarLoader.image.attr('src', gravatar);
+ avatar_cache[h] = avc;
+ avatarLoader = null;
+ }.bind(avatarLoader));
+
+ avatarLoader.image.attr('src', gravatar);
+ }
}
function open_url(target)
diff --git a/plugins/diff/gitg-diff.vala b/plugins/diff/gitg-diff.vala
index 3088d86..43907bb 100644
--- a/plugins/diff/gitg-diff.vala
+++ b/plugins/diff/gitg-diff.vala
@@ -65,6 +65,14 @@ namespace GitgDiff
SettingsBindFlags.GET |
SettingsBindFlags.SET);
+ settings = new Settings("org.gnome.gitg.preferences.interface");
+
+ settings.bind("use-gravatar",
+ d_diff,
+ "use-gravatar",
+ SettingsBindFlags.GET |
+ SettingsBindFlags.SET);
+
d_diff.show();
d_sw.add(d_diff);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]