[gnome-games] grilo: Add GriloDescription & GriloRating
- From: Adrien Plazas <aplazas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games] grilo: Add GriloDescription & GriloRating
- Date: Tue, 24 Jul 2018 06:47:49 +0000 (UTC)
commit 114216bda3cf0de5f0a952358e91451945fe0375
Author: 1PunMan <saurabhsingh412 gmail com>
Date: Tue Mar 20 04:42:52 2018 +0530
grilo: Add GriloDescription & GriloRating
These will be used to make several games get description and rating from the
web using Grilo.
src/grilo/grilo-description.vala | 46 ++++++++++++++++++++++++++++++++++++++++
src/grilo/grilo-rating.vala | 42 ++++++++++++++++++++++++++++++++++++
src/meson.build | 2 ++
3 files changed, 90 insertions(+)
---
diff --git a/src/grilo/grilo-description.vala b/src/grilo/grilo-description.vala
new file mode 100644
index 00000000..e010b24e
--- /dev/null
+++ b/src/grilo/grilo-description.vala
@@ -0,0 +1,46 @@
+// This file is part of GNOME Games. License: GPL-3.0+.
+
+public class Games.GriloDescription : Object, Description {
+ private GriloMedia media;
+ private string description;
+ private bool resolving;
+
+ public GriloDescription (GriloMedia media) {
+ this.media = media;
+ media.resolved.connect (on_media_resolved);
+ resolving = false;
+ }
+
+ public string get_description () {
+ if (resolving)
+ return description;
+
+ if (description != null)
+ return description;
+
+ resolving = true;
+ media.try_resolve_media ();
+
+ return description;
+ }
+
+ private void on_media_resolved () {
+ var grl_media = media.get_media ();
+
+ if (grl_media == null)
+ return;
+
+ if (grl_media.length (Grl.MetadataKey.DESCRIPTION) == 0)
+ return;
+
+ var description_string = grl_media.get_description ();
+ load_media_description (description_string);
+ }
+
+ private void load_media_description (string description_string) {
+ description = description_string;
+ resolving = true;
+
+ changed ();
+ }
+}
diff --git a/src/grilo/grilo-rating.vala b/src/grilo/grilo-rating.vala
new file mode 100644
index 00000000..2308a160
--- /dev/null
+++ b/src/grilo/grilo-rating.vala
@@ -0,0 +1,42 @@
+// This file is part of GNOME Games. License: GPL-3.0+.
+
+public class Games.GriloRating : Object, Rating {
+ private GriloMedia media;
+ private float rating;
+ private bool resolving;
+
+ public GriloRating (GriloMedia media) {
+ this.media = media;
+ media.resolved.connect (on_media_resolved);
+ resolving = false;
+ }
+
+ public float get_rating () {
+ if (resolving)
+ return rating;
+
+ resolving = true;
+ media.try_resolve_media ();
+ return rating;
+ }
+
+ private void on_media_resolved () {
+ var grl_media = media.get_media ();
+
+ if (grl_media == null)
+ return;
+
+ if (grl_media.length (Grl.MetadataKey.RATING) == 0)
+ return;
+
+ var media_rating = grl_media.get_rating ();
+ load_media_rating (media_rating);
+ }
+
+ private void load_media_rating (float media_rating) {
+ rating = media_rating;
+ resolving = true;
+
+ changed ();
+ }
+}
diff --git a/src/meson.build b/src/meson.build
index 14d70efb..3a255b4a 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -89,11 +89,13 @@ vala_sources = [
'grilo/grilo-cooperative.vala',
'grilo/grilo-cover.vala',
+ 'grilo/grilo-description.vala',
'grilo/grilo-developer.vala',
'grilo/grilo-genre.vala',
'grilo/grilo-media.vala',
'grilo/grilo-players.vala',
'grilo/grilo-publisher.vala',
+ 'grilo/grilo-rating.vala',
'grilo/grilo-release-date.vala',
'keyboard/keyboard-mapping-builder.vala',
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]