summaryrefslogtreecommitdiffstats
path: root/src/audio.vala
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2012-10-06 21:09:54 +0200
committerSebastian Reichel <sre@ring0.de>2012-10-06 21:09:54 +0200
commitd70dcb4f20d1c52add759ed4ec5ccbf7131de069 (patch)
tree64db0591701c57fa49e39cdb7a71cb22e2b46551 /src/audio.vala
parent4bc20854220c7fbfb655a6ed476d12cdafce2f2d (diff)
downloadserial-barcode-scanner-d70dcb4f20d1c52add759ed4ec5ccbf7131de069.tar.bz2
Add full audio support (Closes: GH-13)
Diffstat (limited to 'src/audio.vala')
-rw-r--r--src/audio.vala41
1 files changed, 39 insertions, 2 deletions
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);
}
}