diff options
author | Sebastien Bacher <seb128@ubuntu.com> | 2010-08-18 15:51:01 +0200 |
---|---|---|
committer | Sebastien Bacher <seb128@ubuntu.com> | 2010-08-18 15:51:01 +0200 |
commit | b4d305f16bae6804dcf2acf8b9ecc4629807c150 (patch) | |
tree | defa24d440ac7380e17acdee738674022001f6e2 /src/mpris-bridge.vala | |
parent | 986fc648fc6544aaa3bb40a17e1345e0247a4b57 (diff) | |
download | ayatana-indicator-sound-b4d305f16bae6804dcf2acf8b9ecc4629807c150.tar.gz ayatana-indicator-sound-b4d305f16bae6804dcf2acf8b9ecc4629807c150.tar.bz2 ayatana-indicator-sound-b4d305f16bae6804dcf2acf8b9ecc4629807c150.zip |
Import upstream version 0.4.0
Diffstat (limited to 'src/mpris-bridge.vala')
-rw-r--r-- | src/mpris-bridge.vala | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/mpris-bridge.vala b/src/mpris-bridge.vala new file mode 100644 index 0000000..bd9d472 --- /dev/null +++ b/src/mpris-bridge.vala @@ -0,0 +1,70 @@ +public class MprisBridge : GLib.Object +{ + private MprisController mpris1_controller; + private Mpris2Controller mpris2_controller; + private enum mode{ + MPRIS_1, + MPRIS_2 + } + private mode mode_in_use; + + public MprisBridge(PlayerController ctrl) + { + this.mpris2_controller = new Mpris2Controller(ctrl); + if(this.mpris2_controller.was_successfull() == true){ + this.mode_in_use = mode.MPRIS_2; + this.mpris1_controller = null; + this.mpris2_controller.initial_update(); + } + else{ + this.mpris2_controller = null; + this.mode_in_use = mode.MPRIS_1; + this.mpris1_controller = new MprisController(ctrl); + } + } + + // The handling of both mpris controllers can be abstracted further + // once the mpris2 is implemented. This will allow for one instance + // variable to point at the active controller. For now handle both ... + public bool connected() + { + if(this.mode_in_use == mode.MPRIS_1){ + return this.mpris1_controller.connected(); + } + else if(this.mode_in_use == mode.MPRIS_2){ + return this.mpris2_controller.connected(); + } + return false; + } + + public void transport_update(TransportMenuitem.action update) + { + if(this.mode_in_use == mode.MPRIS_1){ + this.mpris1_controller.transport_event(update); + } + else if(this.mode_in_use == mode.MPRIS_2){ + this.mpris2_controller.transport_event(update); + } + } + + public void expose() + { + if(this.mode_in_use == mode.MPRIS_2){ + this.mpris2_controller.expose(); + } + else{ + warning("MPRIS1 clients don't have the ability to raise/expose the client"); + } + } + + + public void set_track_position(double pos) + { + if(this.mode_in_use == mode.MPRIS_1){ + this.mpris1_controller.set_position(pos); + } + else if(this.mode_in_use == mode.MPRIS_2){ + this.mpris2_controller.set_position(pos); + } + } +}
\ No newline at end of file |