ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #02172
[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