← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~cjcurran/indicator-sound/mpris1-removal into lp:indicator-sound

 

Conor Curran has proposed merging lp:~cjcurran/indicator-sound/mpris1-removal into lp:indicator-sound.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)


* remove support for mpris1, because  
  - it does not support Raise()
  - The metadata hash has a completely different structure
  - No client supports mpris1, they have all moved to mpris2
-- 
https://code.launchpad.net/~cjcurran/indicator-sound/mpris1-removal/+merge/33896
Your team ayatana-commits is subscribed to branch lp:indicator-sound.
=== modified file 'src/Makefile.am'
--- src/Makefile.am	2010-08-13 13:48:29 +0000
+++ src/Makefile.am	2010-08-27 11:46:41 +0000
@@ -65,8 +65,6 @@
 	scrub-menu-item.vala \
 	title-menu-item.vala \
 	player-controller.vala \
-	mpris-bridge.vala \
-	mpris-controller.vala \
 	mpris2-controller.vala \
 	player-item.vala \
 	familiar-players-db.vala

=== removed file 'src/mpris-bridge.vala'
--- src/mpris-bridge.vala	2010-08-17 16:26:47 +0000
+++ src/mpris-bridge.vala	1970-01-01 00:00:00 +0000
@@ -1,70 +0,0 @@
-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

=== removed file 'src/mpris-controller.vala'
--- src/mpris-controller.vala	2010-08-25 14:18:45 +0000
+++ src/mpris-controller.vala	1970-01-01 00:00:00 +0000
@@ -1,130 +0,0 @@
-/*
-This service primarily controls PulseAudio and is driven by the sound indicator menu on the panel.
-Copyright 2010 Canonical Ltd.
-
-Authors:
-    Conor Curran <conor.curran@xxxxxxxxxxxxx>
-
-This program is free software: you can redistribute it and/or modify it 
-under the terms of the GNU General Public License version 3, as published 
-by the Free Software Foundation.
-
-This program is distributed in the hope that it will be useful, but 
-WITHOUT ANY WARRANTY; without even the implied warranties of 
-MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR 
-PURPOSE.  See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along 
-with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-using Gee;
-
-public class MprisController : GLib.Object
-{
-	private DBus.Connection connection;
-	public dynamic DBus.Object mpris_player{get; construct;}	
-	public PlayerController owner {get; construct;}	
-	public string mpris_interface {get; construct;}
-	
-	struct status {
-    public int32 playback;
-    public int32 shuffle;
-    public int32 repeat;
-    public int32 endless;
-  }
-		
-	public MprisController(PlayerController ctrl, string inter="org.freedesktop.MediaPlayer"){
-		Object(owner: ctrl, mpris_interface: inter);		
-	}
-
-	construct{
-    try {
-      this.connection = DBus.Bus.get (DBus.BusType.SESSION);
-    } catch (Error e) {
-      error("Problems connecting to the session bus - %s", e.message);
-    }		
-		this.mpris_player = this.connection.get_object ("org.mpris.".concat(this.owner.name.down()) , "/Player", this.mpris_interface);				
-
-		debug("Attempting to establish an mpris connection to %s, %s, %s", "org.mpris.".concat(this.owner.name.down()) , "/Player", this.mpris_interface); 
-
-		this.mpris_player.TrackChange += onTrackChange;	
-    this.mpris_player.StatusChange += onStatusChange;	
-		initial_update();
-	}
-
-	private void initial_update()
-	{
-		status st = this.mpris_player.GetStatus();
-		int play_state =  st.playback;
-		debug("GetStatusChange - play state %i", play_state);
-		(this.owner.custom_items[PlayerController.widget_order.TRANSPORT] as TransportMenuitem).change_play_state(play_state);
-		this.owner.custom_items[PlayerController.widget_order.METADATA].update(this.mpris_player.GetMetadata(),
-		                            MetadataMenuitem.attributes_format());
-	}
-
-	public void transport_event(TransportMenuitem.action command)
-	{
-		debug("transport_event input = %i", (int)command);
-		if(command == TransportMenuitem.action.PLAY_PAUSE){
-			debug("transport_event PLAY_PAUSE");
-			this.mpris_player.Pause();							
-		}
-		else if(command == TransportMenuitem.action.PREVIOUS){
-			this.mpris_player.Prev();
-		}
-		else if(command == TransportMenuitem.action.NEXT){
-			this.mpris_player.Next();
-		}
-	}
-
-	public void set_position(double position)
-	{
-		debug("Set position with pos (0-100) %f", position);
-		HashTable<string, Value?> data = this.mpris_player.GetMetadata();
-		Value? time_value = data.lookup("time");
-		if(time_value == null){
-			warning("Can't fetch the duration of the track therefore cant set the position");
-			return;
-		}
-		uint32 total_time = time_value.get_uint();
-		debug("total time of track = %i", (int)total_time);				
-		double new_time_position = total_time * position/100.0;
-		debug("new position = %f", (new_time_position * 1000));		
-		this.mpris_player.PositionSet((int32)(new_time_position));
-	}
-	
-	public bool connected()
-	{
-		return (this.mpris_player != null);
-	}
-	
-	private void onStatusChange(dynamic DBus.Object mpris_client, status st)
-  {
-    debug("onStatusChange - signal received");
-		status* status = &st;
-		unowned ValueArray ar = (ValueArray)status;		
-		int play_state = ar.get_nth(0).get_int();
-		debug("onStatusChange - play state %i", play_state);
-		HashTable<string, Value?> ht = new HashTable<string, Value?>(str_hash, str_equal);
-		Value v = Value(typeof(int));
-		v.set_int(play_state);
-		ht.insert("state", v); 
-		this.owner.custom_items[PlayerController.widget_order.TRANSPORT].update(ht, TransportMenuitem.attributes_format());
-	}
-	
-	private void onTrackChange(dynamic DBus.Object mpris_client, HashTable<string,Value?> ht)
-	{
-		debug("onTrackChange");
-		
-		this.owner.custom_items[PlayerController.widget_order.METADATA].reset(MetadataMenuitem.attributes_format());
-
-		status st = this.mpris_player.GetStatus();
-		int play_state =  st.playback;
-		debug("GetStatusChange, about to update scrub with play state - %i", play_state);
-
-		this.owner.custom_items[PlayerController.widget_order.METADATA].update(ht,
-		                            MetadataMenuitem.attributes_format());
-		debug("about to update the duration on the scrub bar");
-	}
-}

=== modified file 'src/mpris2-controller.vala'
--- src/mpris2-controller.vala	2010-08-25 14:18:45 +0000
+++ src/mpris2-controller.vala	2010-08-27 11:46:41 +0000
@@ -171,7 +171,7 @@
 			                          MetadataMenuitem.attributes_format());
 	}
 
-	public void transport_event(TransportMenuitem.action command)
+	public void transport_update(TransportMenuitem.action command)
 	{		
 		debug("transport_event input = %i", (int)command);
 		if(command == TransportMenuitem.action.PLAY_PAUSE){
@@ -207,7 +207,7 @@
 		TODO: SetPosition on the player object is not working with rhythmbox,
 	  runtime error - "dbus function not supported"
 	 */
-	public void set_position(double position)
+	public void set_track_position(double position)
 	{			
 		debug("Set position with pos (0-100) %f", position);
 		Value? time_value = this.player.Metadata.lookup("mpris:length");
@@ -227,8 +227,6 @@
 				DBus.ObjectPath path = new ObjectPath(v.get_string());
 				try{
 					this.player.SetPosition(path, (int64)(new_time_position));
-					//ScrubMenuitem scrub = this.owner.custom_items[PlayerController.widget_order.SCRUB] as ScrubMenuitem;
-					//scrub.update_position(((int32)new_time_position) / 1000);			
 				}
 				catch(DBus.Error e){
 					error("DBus Error calling the player objects SetPosition method %s",
@@ -240,8 +238,6 @@
 
 	public void onSeeked(int64 position){
 		debug("Seeked signal callback with pos = %i", (int)position/1000);
-		//ScrubMenuitem scrub = this.owner.custom_items[PlayerController.widget_order.SCRUB] as ScrubMenuitem;
-		//scrub.update_position((int32)position/1000);			
 	}
 	
 	public bool connected()

=== modified file 'src/player-controller.vala'
--- src/player-controller.vala	2010-08-25 14:18:45 +0000
+++ src/player-controller.vala	2010-08-27 11:46:41 +0000
@@ -45,11 +45,14 @@
 	private Dbusmenu.Menuitem root_menu;
 	public string name { get; set;}	
 	public ArrayList<PlayerItem> custom_items;	
-	public MprisBridge mpris_bridge;
+	public Mpris2Controller mpris_bridge;
 	public AppInfo? app_info { get; set;}
 	public int menu_offset { get; set;}
 		
-	public PlayerController(Dbusmenu.Menuitem root, string client_name, int offset, state initial_state)
+	public PlayerController(Dbusmenu.Menuitem root,
+	                        string client_name,
+	                        int offset,
+	                        state initial_state)
 	{
 		this.root_menu = root;
 		this.name = format_client_name(client_name.strip());
@@ -97,7 +100,7 @@
 			debug("establish_mpris_connection - Not ready to connect");
 			return;
 		}		
-		this.mpris_bridge = new MprisBridge(this); 
+		this.mpris_bridge = new Mpris2Controller(this); 
 		this.determine_state();
 	}
 	


Follow ups