aboutsummaryrefslogtreecommitdiff
path: root/src/mpris-bridge.vala
diff options
context:
space:
mode:
authorConor Curran <conor.curran@canonical.com>2010-08-18 12:04:59 +0100
committerConor Curran <conor.curran@canonical.com>2010-08-18 12:04:59 +0100
commit88c0ff52c479c7ec7a70448fe17946ee5ff68d3d (patch)
tree5aa8c8001b5ea2f7417dd2bf962347e527581425 /src/mpris-bridge.vala
parent44d47d0c4d334ba3cd2b8d9bd34893ba8c3dedf9 (diff)
parent4897f3ce524e6d91ecd0c70142556be0f29367b7 (diff)
downloadayatana-indicator-sound-88c0ff52c479c7ec7a70448fe17946ee5ff68d3d.tar.gz
ayatana-indicator-sound-88c0ff52c479c7ec7a70448fe17946ee5ff68d3d.tar.bz2
ayatana-indicator-sound-88c0ff52c479c7ec7a70448fe17946ee5ff68d3d.zip
merge the mpris2 operational branch
Diffstat (limited to 'src/mpris-bridge.vala')
-rw-r--r--src/mpris-bridge.vala70
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