From d70dcb4f20d1c52add759ed4ec5ccbf7131de069 Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Sat, 6 Oct 2012 21:09:54 +0200 Subject: Add full audio support (Closes: GH-13) --- src/audio.vala | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'src/audio.vala') diff --git a/src/audio.vala b/src/audio.vala index e30f3b1..eeff7b1 100644 --- a/src/audio.vala +++ b/src/audio.vala @@ -15,6 +15,7 @@ public class AudioPlayer { private dynamic Gst.Element p; + string path; public signal void end_of_stream(); @@ -29,13 +30,49 @@ public class AudioPlayer { } public AudioPlayer() { + path = Environment.get_current_dir()+"/sounds/"; p = Gst.ElementFactory.make("playbin", "play"); p.get_bus().add_watch(bus_callback); } - public void play(string file) { + public void play_system(string file) { p.set_state(Gst.State.NULL); - p.uri = "file://"+Environment.get_current_dir()+"/sounds/"+file; + p.uri = "file://" + path + "system/"+file; + p.set_state(Gst.State.PLAYING); + } + + private string[] get_files(string dir) { + try { + var directory = File.new_for_path(dir); + var enumerator = directory.enumerate_children(FileAttribute.STANDARD_NAME, 0); + string[] result = {}; + + FileInfo file_info; + while ((file_info = enumerator.next_file ()) != null) { + result += file_info.get_name(); + } + + return result; + } catch (Error e) { + write_to_log("Error: %s\n", e.message); + return {}; + } + } + + private string get_random_file(string dir) { + var files = get_files(dir); + var index = Random.int_range(0, files.length); + return files[index]; + } + + public string get_random_user_theme() { + return get_random_file(path + "user/"); + } + + public void play_user(string theme, string type) { + p.set_state(Gst.State.NULL); + var file = get_random_file(path + "user/" + theme+ "/" + type); + p.uri = "file://" + path + "user/" + theme+ "/" + type + "/" + file; p.set_state(Gst.State.PLAYING); } } -- cgit v1.2.3