[gnome-games] core: Add MediaSet



commit 921075edb8799623dee0e03b8e327e0b482a1e01
Author: Ricard Gascons <gascons1995 gmail com>
Date:   Thu Aug 18 12:40:17 2016 +0200

    core: Add MediaSet
    
    This will be used in next commits to store different types of Media.
    
    This is part of a series of commits to add multi-source support.

 src/Makefile.am                         |    2 +
 src/core/media-set/media-set-error.vala |    5 ++++
 src/core/media-set/media-set.vala       |   35 +++++++++++++++++++++++++++++++
 3 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 9e25052..774962a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -42,6 +42,8 @@ gnome_games_SOURCES = \
        core/game-uri-adapter.vala \
        core/icon.vala \
        core/media.vala \
+       core/media-set/media-set.vala \
+       core/media-set/media-set-error.vala \
        core/plugin.vala \
        core/plugin-register.vala \
        core/plugin-registrar.vala \
diff --git a/src/core/media-set/media-set-error.vala b/src/core/media-set/media-set-error.vala
new file mode 100644
index 0000000..2070443
--- /dev/null
+++ b/src/core/media-set/media-set-error.vala
@@ -0,0 +1,5 @@
+// This file is part of GNOME Games. License: GPLv3
+
+errordomain Games.MediaSetError {
+       NOT_A_MEDIA,
+}
diff --git a/src/core/media-set/media-set.vala b/src/core/media-set/media-set.vala
new file mode 100644
index 0000000..72a8f87
--- /dev/null
+++ b/src/core/media-set/media-set.vala
@@ -0,0 +1,35 @@
+// This file is part of GNOME Games. License: GPLv3
+
+public class Games.MediaSet : Object {
+       public delegate void MediaCallback (Media media);
+
+       public int selected_media_number { set; get; default = 0; }
+       public GLib.Icon? icon { private set; get; }
+
+       private Media[] medias;
+
+       public MediaSet (Media[] medias, GLib.Icon? icon = null) {
+               this.medias = medias;
+               this.icon = icon;
+       }
+
+       public int get_size () {
+               return medias.length;
+       }
+
+       public Media get_selected_media (uint index) throws Error {
+               return get_media (selected_media_number);
+       }
+
+       public void foreach_media (MediaCallback media_callback) {
+               foreach (var media in medias)
+                       media_callback (media);
+       }
+
+       private Media get_media (uint index) throws Error {
+               if (index >= medias.length)
+                       throw new MediaSetError.NOT_A_MEDIA (_("Invalid media index %u."), index);
+
+               return medias[index];
+       }
+}


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