diff options
-rw-r--r-- | src/mpris-controller.vala | 22 | ||||
-rw-r--r-- | src/player-item.vala | 5 | ||||
-rw-r--r-- | src/transport-menu-item.vala | 7 | ||||
-rw-r--r-- | src/transport-widget.c | 2 |
4 files changed, 22 insertions, 14 deletions
diff --git a/src/mpris-controller.vala b/src/mpris-controller.vala index c71662a..62077d1 100644 --- a/src/mpris-controller.vala +++ b/src/mpris-controller.vala @@ -20,7 +20,6 @@ with this program. If not, see <http://www.gnu.org/licenses/>. using Gee; - public class MprisController : GLib.Object { private DBus.Connection connection; @@ -33,7 +32,6 @@ public class MprisController : GLib.Object public int32 endless; } - public MprisController(string name, PlayerController controller, string mpris_interface="org.freedesktop.MediaPlayer"){ try { this.connection = DBus.Bus.get (DBus.BusType.SESSION); @@ -44,18 +42,13 @@ public class MprisController : GLib.Object this.mpris_player = this.connection.get_object ("org.mpris.".concat(name.down()) , "/Player", mpris_interface); this.mpris_player.TrackChange += onTrackChange; this.mpris_player.StatusChange += onStatusChange; - //this.controller.update_playing_info(get_track_data()); } - //public HashMap<string, string> get_track_data() - //{ - //return format_metadata(this.mpris_player.GetMetadata()); - //} private void onTrackChange(dynamic DBus.Object mpris_client, HashTable<string,Value?> ht) { this.controller.custom_items[this.controller.METADATA].update(ht, - MetadataMenuitem.attributes_format()); + MetadataMenuitem.attributes_format()); } /** @@ -80,11 +73,14 @@ public class MprisController : GLib.Object status* status = &st; unowned ValueArray ar = (ValueArray)status; - int playback = ar.get_nth(0).get_int(); - debug("onStatusChange - play %i", ar.get_nth(0).get_int()); - - //int repeat = ar.get_nth(2).get_int(); - //int endless = ar.get_nth(3).get_int(); + bool play_state = (ar.get_nth(0).get_int() == 1); + debug("onStatusChange - play state %s", play_state.to_string()); + HashTable<string, Value?> ht = new HashTable<string, Value?>(str_hash, str_equal); + Value v = Value(typeof(bool)); + v.set_boolean(play_state); + ht.insert("state", play_state); + this.controller.custom_items[this.controller.TRANSPORT].update(ht, + TransportMenuitem.attributes_format()); } } diff --git a/src/player-item.vala b/src/player-item.vala index 7bf1063..fe1eeab 100644 --- a/src/player-item.vala +++ b/src/player-item.vala @@ -44,6 +44,11 @@ public class PlayerItem : Dbusmenu.Menuitem int r = *v; this.property_set_int(property, r); } + else if(data.lookup(search_key).holds (typeof (bool))){ + bool* b = (bool*)data.lookup(search_key); + bool input = *b; + this.property_set_bool(property, input); + } } } diff --git a/src/transport-menu-item.vala b/src/transport-menu-item.vala index 3c49e1c..aae07cc 100644 --- a/src/transport-menu-item.vala +++ b/src/transport-menu-item.vala @@ -36,5 +36,12 @@ public class TransportMenuitem : PlayerItem { debug("handle_event with bool value %s", input_value.get_boolean().to_string()); this.mpris_adaptor.toggle_playback(input_value.get_boolean()); + } + + public static HashSet<string> attributes_format() + { + HashSet<string> attrs = new HashSet<string>(); + attrs.add(MENUITEM_STATE); + return attrs; } }
\ No newline at end of file diff --git a/src/transport-widget.c b/src/transport-widget.c index 10b96df..e1baa68 100644 --- a/src/transport-widget.c +++ b/src/transport-widget.c @@ -222,7 +222,7 @@ transport_widget_property_update(DbusmenuMenuitem* item, gchar* property, TransportWidget* bar = (TransportWidget*)userdata; TransportWidgetPrivate *priv = TRANSPORT_WIDGET_GET_PRIVATE(bar); - gtk_button_set_label(GTK_BUTTON(priv->play_button), g_strdup(transport_widget_toggle_play_label(property))); + gtk_button_set_label(GTK_BUTTON(priv->play_button), transport_widget_toggle_play_label(property)); } // will be needed for image swapping |