\ No newline at end of file
diff --git a/mpris_server/all.html b/mpris_server/all.html
index 08cd772..8855668 100644
--- a/mpris_server/all.html
+++ b/mpris_server/all.html
@@ -1,2 +1,2 @@
-List of all items in this crate
+List of all items in this crate
\ No newline at end of file
diff --git a/mpris_server/attr.async_trait.html b/mpris_server/attr.async_trait.html
index bb60f1a..9cc4619 100644
--- a/mpris_server/attr.async_trait.html
+++ b/mpris_server/attr.async_trait.html
@@ -1,4 +1,4 @@
-async_trait in mpris_server - Rust
+async_trait in mpris_server - Rust
Sets a unique identity for this track within the context of an
MPRIS object (eg: tracklist).
This contains a D-Bus path that uniquely identifies the track
within the scope of the playlist. There may or may not be an actual
D-Bus object at that path; this specification says nothing about
what interfaces such an object may implement.
An iterator over substrings of this string slice, separated by
characters matched by a pattern. Differs from the iterator produced by
split in that split_inclusive leaves the matched part as the
@@ -568,7 +578,7 @@
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
.split_inclusive('\n').collect();
assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
An iterator over substrings of this string slice, separated by a
pattern, starting from the end of the string, restricted to returning
@@ -704,7 +714,7 @@
If the string starts with the pattern prefix, returns substring after the prefix, wrapped
in Some. Unlike trim_start_matches, this method removes the prefix exactly once.
Replaces all matches of a pattern with another string.
replace creates a new String, and copies the data from this string slice into it.
While doing so, it attempts to find matches of a pattern. If it finds any, it
@@ -1143,7 +1153,7 @@
Replaces first N matches of a pattern with another string.
replacen creates a new String, and copies the data from this string slice into it.
While doing so, it attempts to find matches of a pattern. If it finds any, it
@@ -1159,7 +1169,7 @@
This should be sent as strings in ISO 8601 extended
format (eg: 2007-04-29T14:35:51). If the timezone is known (eg: for
diff --git a/mpris_server/type.PlaybackRate.html b/mpris_server/type.PlaybackRate.html
index 8432918..babc81b 100644
--- a/mpris_server/type.PlaybackRate.html
+++ b/mpris_server/type.PlaybackRate.html
@@ -1,4 +1,4 @@
-
This is a multiplier, so a value of 0.5 indicates that playback
is happening at half speed, while 1.5 means that 1.5 seconds of
diff --git a/mpris_server/type.PlaylistId.html b/mpris_server/type.PlaylistId.html
index 806b967..216723e 100644
--- a/mpris_server/type.PlaylistId.html
+++ b/mpris_server/type.PlaylistId.html
@@ -1,4 +1,4 @@
-
diff --git a/search-index.js b/search-index.js
index 0045ae1..e7927dc 100644
--- a/search-index.js
+++ b/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["mpris_server",{"doc":"MPRIS Server","t":"PPPPPPPPPPPPIPPPPPKKKFFKGPTTPFPPPTPPPIGPFKPFPPPIGKGGGPKPFPGPPPFPPFKGPGPPPIPIPTNMMMMNNMMNNNNNNNNNNNXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNMMNMMMMNMMNMMNMMNMMNMMNMMNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNMMMMNMMMMNNNOOMMNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNMMNMMNMMNONNNNNNNNNMMNNNMMMMNMMMMMMMMNMMNNNNNMMNMMNNMMMMMMNMMNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNMMNNNNNNNMMNMMNMMNNNNNNNNNNMMNMMNNNNNNNNMMNNMMNMMNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNEOOOOOOOOOFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["ActivePlaylist","Alphabetical","CanEditTracks","CanGoNext","CanGoPrevious","CanPause","CanPlay","CanQuit","CanRaise","CanSeek","CanSetFullscreen","CreationDate","DateTime","DesktopEntry","Fullscreen","HasTrackList","Identity","LastPlayDate","LocalPlayerInterface","LocalPlaylistsInterface","LocalRootInterface","LocalServer","LocalServerRunTask","LocalTrackListInterface","LoopStatus","LoopStatus","MAX","MIN","MaximumRate","Metadata","Metadata","MinimumRate","ModifiedDate","NO_TRACK","None","Orderings","Paused","PlaybackRate","PlaybackStatus","PlaybackStatus","Player","PlayerInterface","Playing","Playlist","Playlist","PlaylistChanged","PlaylistCount","PlaylistId","PlaylistOrdering","PlaylistsInterface","PlaylistsProperty","PlaylistsSignal","Property","Rate","RootInterface","Seeked","Server","Shuffle","Signal","Stopped","SupportedMimeTypes","SupportedUriSchemes","Time","Track","TrackAdded","TrackId","TrackListInterface","TrackListProperty","TrackListReplaced","TrackListSignal","TrackMetadataChanged","TrackRemoved","Tracks","Uri","UserDefined","Volume","Volume","ZERO","abs","activate_playlist","activate_playlist","active_playlist","active_playlist","add","add_assign","add_track","add_track","album","album_artist","art_url","artist","as_micros","as_millis","as_nanos","as_secs","as_str","as_str","as_str","async_trait","audio_bpm","auto_rating","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","builder","builder","builder","can_control","can_control","can_control","can_edit_tracks","can_edit_tracks","can_go_next","can_go_next","can_go_next","can_go_previous","can_go_previous","can_go_previous","can_pause","can_pause","can_pause","can_play","can_play","can_play","can_quit","can_quit","can_quit","can_raise","can_raise","can_raise","can_seek","can_seek","can_seek","can_set_fullscreen","can_set_fullscreen","can_set_fullscreen","checked_add","checked_sub","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","comment","composer","connect_next","connect_open_uri","connect_pause","connect_play","connect_play_pause","connect_previous","connect_quit","connect_raise","connect_seek","connect_set_fullscreen","connect_set_loop_status","connect_set_position","connect_set_rate","connect_set_shuffle","connect_set_volume","connect_stop","connection","connection","content_created","default","default","default","deref","deserialize","deserialize","deserialize","deserializer_for_signature","deserializer_for_signature","deserializer_for_signature","desktop_entry","desktop_entry","desktop_entry","disc_number","dynamic_signature","dynamic_signature","dynamic_signature","dynamic_signature","dynamic_signature","dynamic_signature","dynamic_signature","emit","emit","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","first_used","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_micros","from_millis","from_nanos","from_secs","fullscreen","fullscreen","fullscreen","genre","get","get_playlists","get_playlists","get_tracks_metadata","get_tracks_metadata","get_value","go_to","go_to","has_track_list","has_track_list","has_track_list","hash","hash","icon","id","identity","identity","identity","imp","imp","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_future","into_inner","is_negative","is_positive","is_zero","last_used","length","loop_status","loop_status","loop_status","lyricist","lyrics","maximum_rate","maximum_rate","maximum_rate","metadata","metadata","metadata","minimum_rate","minimum_rate","minimum_rate","name","new","new","new","new_with_all","new_with_all","new_with_playlists","new_with_playlists","new_with_track_list","new_with_track_list","next","next","null_value","null_value","null_value","open_uri","open_uri","orderings","orderings","partial_cmp","pause","pause","play","play","play_pause","play_pause","playback_status","playback_status","playback_status","playlist_count","playlist_count","playlists_emit","playlists_emit","playlists_properties_changed","playlists_properties_changed","poll","position","position","position","previous","previous","properties_changed","properties_changed","quit","quit","raise","raise","rate","rate","rate","remove_track","remove_track","run","run","saturating_add","saturating_sub","seek","seek","seeked","serialize","serialize","serialize","serialize","set","set_album","set_album_artist","set_art_url","set_artist","set_audio_bpm","set_auto_rating","set_can_go_next","set_can_go_previous","set_can_pause","set_can_play","set_can_quit","set_can_raise","set_can_seek","set_can_set_fullscreen","set_comment","set_composer","set_content_created","set_desktop_entry","set_disc_number","set_first_used","set_fullscreen","set_fullscreen","set_fullscreen","set_genre","set_has_track_list","set_identity","set_last_used","set_length","set_loop_status","set_loop_status","set_loop_status","set_lyricist","set_lyrics","set_maximum_rate","set_metadata","set_minimum_rate","set_playback_status","set_position","set_position","set_position","set_rate","set_rate","set_rate","set_shuffle","set_shuffle","set_shuffle","set_supported_mime_types","set_supported_uri_schemes","set_title","set_track_number","set_trackid","set_url","set_use_count","set_user_rating","set_value","set_volume","set_volume","set_volume","shuffle","shuffle","shuffle","signature","signature","signature","signature","signature","signature","signature","stop","stop","sub","sub_assign","supported_mime_types","supported_mime_types","supported_mime_types","supported_uri_schemes","supported_uri_schemes","supported_uri_schemes","title","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","track_list_emit","track_list_emit","track_list_properties_changed","track_list_properties_changed","track_number","trackid","tracks","tracks","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","use_count","user_rating","volume","volume","volume","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zbus","playlist","position","after_track","current_track","metadata","metadata","track_id","track_id","tracks","MetadataBuilder","PlayerBuilder","album","album_artist","art_url","artist","audio_bpm","auto_rating","borrow","borrow","borrow_mut","borrow_mut","build","build","can_control","can_go_next","can_go_previous","can_pause","can_play","can_quit","can_raise","can_seek","can_set_fullscreen","clone","clone_into","comment","composer","content_created","default","desktop_entry","disc_number","first_used","fmt","fmt","from","from","fullscreen","genre","has_track_list","identity","into","into","last_used","length","loop_status","lyricist","lyrics","maximum_rate","metadata","minimum_rate","null_value","other","playback_status","position","rate","shuffle","supported_mime_types","supported_uri_schemes","title","to_owned","track_number","trackid","try_from","try_from","try_into","try_into","type_id","type_id","url","use_count","user_rating","volume","vzip","vzip"],"q":[[0,"mpris_server"],[595,"mpris_server::PlaylistsSignal"],[596,"mpris_server::Signal"],[597,"mpris_server::TrackListSignal"],[604,"mpris_server::builder"],[678,"core::future::future"],[679,"alloc::boxed"],[680,"core::pin"],[681,"core::option"],[682,"alloc::string"],[683,"alloc::vec"],[684,"core::cmp"],[685,"core::ops::function"],[686,"zbus::connection"],[687,"core::result"],[688,"serde::de"],[689,"zvariant::error"],[690,"zvariant::signature"],[691,"core::convert"],[692,"core::cell"],[693,"zbus::error"],[694,"core::fmt"],[695,"core::fmt"],[696,"zvariant::error"],[697,"core::hash"],[698,"core::iter::traits::collect"],[699,"core::task::wake"],[700,"core::task::poll"],[701,"serde::ser"],[702,"core::convert"]],"d":["","Alphabetical ordering by name, ascending.","","","","","","","","","","Ordering by creation date, oldest first.","Combined date and time.","","","","","Ordering by date of last playback, oldest first.","Local version of PlayerInterface to be used with …","Local version of PlaylistsInterface to be used with …","Local version of RootInterface to be used with LocalServer.","Local version of Server that doesn’t require T to be Send…","A task that runs LocalServer’s event handler until the …","Local version of TrackListInterface to be used with …","A repeat / loop status.","","The maximum time.","The minimum time.","","A mapping from metadata attribute names to values.","","","Ordering by last modified date, oldest first.","A special track ID to indicate “no track”.","The playback will stop when there are no more tracks to …","","A track is currently paused.","A playback rate.","A playback state.","","Ready-to-use mutable service-side object that internally …","Used to implement org.mpris.MediaPlayer2.Player interface, …","A track is currently playing.","A data structure describing a playlist.","The playback loops through a list of tracks.","Indicates that either the Name or Icon attribute of a …","","Unique playlist identifier.","Specifies the ordering of returned playlists.","Used to implement org.mpris.MediaPlayer2.Playlists …","Used for emitting PropertiesChanged signals on …","Used for emitting signals on Server::playlists_emit and …","Used for emitting PropertiesChanged signals on …","","Used to implement org.mpris.MediaPlayer2 interface.","Indicates that the track position has changed in a way …","Thin wrapper around zbus::Connection that calls to T’s …","","Used for emitting signals on Server::emit and …","There is no track currently playing.","","","A time with microsecond precision which can be negative.","The current track will start again from the beginning once …","Indicates that a track has been added to the track list.","Unique track identifier.","Used to implement org.mpris.MediaPlayer2.TrackList …","Used for emitting PropertiesChanged signals on …","Indicates that the entire tracklist has been replaced.","Used for emitting signals on Server::track_list_emit and …","Indicates that the metadata of a track in the tracklist …","Indicates that a track has been removed from the track …","","A unique resource identifier.","A user-defined ordering.","Audio volume level.","","A time of zero.","Returns the time as an absolute (non-negative) value.","Starts playing the given playlist.","Starts playing the given playlist.","The currently-active playlist.","The currently-active playlist.","","","Adds a URI in the tracklist.","Adds a URI in the tracklist.","The album name.","The album artist(s).","The location of an image representing the track or album.","The track artist(s).","Returns the number of whole microseconds contained by this …","Returns the number of whole milliseconds contained by this …","Returns the number of whole nanoseconds contained by this …","Returns the number of whole seconds contained by this Time.","Returns the string representation of this loop status.","Returns the string representation of this playback status.","Returns the string representation of this playlist …","Retrofits support for async fn in trait impls and …","The speed of the music, in beats per minute.","An automatically-generated rating, based on things such as …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This contains the definitions of builder-pattern structs.","Creates a new builder-pattern struct instance to construct …","","Whether the media player may be controlled over this …","Whether the media player may be controlled over this …","This can only be set on construct.","Whether tracks can be added to and removed from the …","Whether tracks can be added to and removed from the …","Whether the client can call the Next method on this …","Whether the client can call the Next method on this …","","Whether the client can call the Previous method on this …","Whether the client can call the Previous method on this …","","Whether playback can be paused using Pause or PlayPause.","Whether playback can be paused using Pause or PlayPause.","","Whether playback can be started using Play or PlayPause.","Whether playback can be started using Play or PlayPause.","","Whether the player may be asked to quit.","Whether the player may be asked to quit.","","Whether the media player may be asked to be raised.","Whether the media player may be asked to be raised.","","Whether the client can control the playback position using …","Whether the client can control the playback position using …","","Whether the player may be asked to enter or leave …","Whether the player may be asked to enter or leave …","","Checked Time addition. Computes self + other, returning …","Checked Time subtraction. Computes self - other, returning …","","","","","","","","","","","","","","","","","","","","","","A (list of) freeform comment(s).","The composer(s) of the track.","","","","","","","","","","","","","","","","","Returns a reference to the inner Connection.","Returns a reference to the inner Connection.","When the track was created. Usually only the year component","","","","","","","","","","","The basename of an installed .desktop file which complies …","The basename of an installed .desktop file which complies …","","The disc number on the album that this track is from.","","","","","","","","Emits the given signal.","Emits the given signal.","","","","","","","","","","","When the track was first played.","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Creates a new Time from the specified number of whole …","Creates a new Time from the specified number of whole …","Creates a new Time from the specified number of whole …","Creates a new Time from the specified number of whole …","Whether the media player is occupying the fullscreen.","Whether the media player is occupying the fullscreen.","","The genre(s) of the track.","Returns the value corresponding to the key and convert it …","Gets a set of playlists.","Gets a set of playlists.","Gets all the metadata available for a set of tracks.","Gets all the metadata available for a set of tracks.","Returns a reference to the value corresponding to the key.","Skip to the specified TrackId.","Skip to the specified TrackId.","Indicates whether the /org/mpris/MediaPlayer2 object …","Indicates whether the /org/mpris/MediaPlayer2 object …","","","","The URI of an (optional) icon.","A unique identifier for the playlist.","A friendly name to identify the media player to users (eg: …","A friendly name to identify the media player to users (eg: …","","Returns a reference to the underlying implementation.","Returns a reference to the underlying implementation.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Returns the track ID as an ObjectPath.","Returns true if this Time is negative.","Returns true if this Time is positive.","Returns true if this Time is zero.","When the track was last played.","The duration of the track.","The current loop / repeat status","The current loop / repeat status","","The lyricist(s) of the track.","The track lyrics.","The maximum value which the Rate property can take. …","The maximum value which the Rate property can take. …","","The metadata of the current element.","The metadata of the current element.","","The minimum value which the Rate property can take. …","The minimum value which the Rate property can take. …","","The name of the playlist, typically given by the user.","Creates a new LocalServer with the given bus name suffix …","Creates a new Server with the given bus name suffix and …","Creates an empty Metadata.","Creates a new LocalServer with the given bus name suffix …","Creates a new Server with the given bus name suffix and …","Creates a new LocalServer with the given bus name suffix …","Creates a new Server with the given bus name suffix and …","Creates a new LocalServer with the given bus name suffix …","Creates a new Server with the given bus name suffix and …","Skips to the next track in the tracklist.","Skips to the next track in the tracklist.","","","","Opens the uri given as an argument","Opens the uri given as an argument","The available orderings. At least one must be offered.","The available orderings. At least one must be offered.","","Pauses playback.","Pauses playback.","Starts or resumes playback.","Starts or resumes playback.","Pauses playback.","Pauses playback.","The current playback status.","The current playback status.","","The number of playlists available.","The number of playlists available.","Emits the given signal on the Playlists interface.","Emits the given signal on the Playlists interface.","Emits the PropertiesChanged signal for the given …","Emits the PropertiesChanged signal for the given …","","The current track position, between 0 and the mpris:length …","The current track position, between 0 and the mpris:length …","","Skips to the previous track in the tracklist.","Skips to the previous track in the tracklist.","Emits the PropertiesChanged signal for the given …","Emits the PropertiesChanged signal for the given …","Causes the media player to stop running.","Causes the media player to stop running.","Brings the media player’s user interface to the front …","Brings the media player’s user interface to the front …","The current playback rate.","The current playback rate.","","Removes an item from the tracklist.","Removes an item from the tracklist.","Returns a task that run the server until the server and …","Returns a task that runs the player’s server until the …","Saturating Time addition. Computes self + other, returning …","Saturating Time subtraction. Computes self - other, …","Seeks forward in the current track by the specified offset …","Seeks forward in the current track by the specified offset …","","","","","","Sets the value for the given key and returns the previous …","Sets the album name.","Sets the album artist(s).","Sets the location of an image representing the track or …","Sets the track artist(s).","Sets the speed of the music, in beats per minute.","Sets an automatically-generated rating, based on things …","","","","","","","","","Sets a (list of) freeform comment(s).","Sets the composer(s) of the track.","Sets when the track was created. Usually only the year …","","Sets the disc number on the album that this track is from.","Sets when the track was first played.","Sets whether the media player is occupying the fullscreen.","Sets whether the media player is occupying the fullscreen.","","Sets the genre(s) of the track.","","","Sets when the track was last played.","Sets the duration of the track.","Sets the current loop / repeat status","Sets the current loop / repeat status","","Sets the lyricist(s) of the track.","Sets the track lyrics.","","","","","Sets the current track position.","Sets the current track position.","This does not emit PropertiesChanged signal.","Sets the current playback rate.","Sets the current playback rate.","","Sets whether playback is shuffled.","Sets whether playback is shuffled.","","","","Sets the track title.","Sets the track number on the album disc.","Sets a unique identity for this track within the context …","Sets the location of the media file.","Sets the number of times the track has been played.","Sets a user-specified rating. This should be in the range …","Sets the value for the given key and returns the previous …","Sets the volume level.","Sets the volume level.","","Whether playback is shuffled.","Whether playback is shuffled.","","","","","","","","","Stops playback.","Stops playback.","","","The mime-types supported by the media player.","The mime-types supported by the media player.","","The URI schemes supported by the media player.","The URI schemes supported by the media player.","","The track title.","","","","","","","","","","","","","","","Emits the given signal on the TrackList interface.","Emits the given signal on the TrackList interface.","Emits the PropertiesChanged signal for the given …","Emits the PropertiesChanged signal for the given …","The track number on the album disc.","A unique identity for this track within the context of an …","An array which contains the identifier of each track in …","An array which contains the identifier of each track in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The location of the media file.","The number of times the track has been played.","A user-specified rating. This should be in the range 0.0 …","The volume level.","The volume level.","","","","","","","","","","","","","","","","","","","","The playlist which details have changed.","The new position.","The identifier of the track after which the new track was …","The identifier of the track to be considered as current.","The metadata of the newly added item.","The new track metadata.","The identifier of the track being removed.","The id of the track which metadata has changed.","The new content of the tracklist.","A builder used to create Metadata.","A builder used to create Player.","Sets the album name.","Sets the album artist(s).","Sets the location of an image representing the track or …","Sets the track artist(s).","Sets the speed of the music, in beats per minute.","Sets an automatically-generated rating, based on things …","","","","","Creates Metadata from the builder.","","","","","","","","","","","","","Sets a (list of) freeform comment(s).","Sets the composer(s) of the track.","Sets when the track was created. Usually only the year …","","","Sets the disc number on the album that this track is from.","Sets when the track was first played.","","","Returns the argument unchanged.","Returns the argument unchanged.","","Sets the genre(s) of the track.","","","Calls U::from(self).","Calls U::from(self).","Sets when the track was last played.","Sets the duration of the track.","","Sets the lyricist(s) of the track.","Sets the track lyrics.","","","","","Sets a value for the given key.","","","","","","","Sets the track title.","","Sets the track number on the album disc.","Sets a unique identity for this track within the context …","","","","","","","Sets the location of the media file.","Sets the number of times the track has been played.","Sets a user-specified rating. This should be in the range …","","",""],"i":[36,23,35,34,34,34,34,34,34,34,34,23,0,34,34,34,34,23,0,0,0,0,0,0,0,34,1,1,34,0,34,34,23,11,21,36,22,0,0,34,0,0,22,0,21,57,36,0,0,0,0,0,0,34,0,51,0,34,0,22,34,34,0,21,56,0,0,0,56,0,56,56,35,0,23,0,34,1,1,2,7,2,7,1,1,9,13,14,14,14,14,1,1,1,1,21,22,23,0,14,14,53,41,43,21,14,22,30,33,23,34,35,36,51,56,57,1,11,53,41,43,21,14,22,30,33,23,34,35,36,51,56,57,1,11,0,14,30,28,29,30,9,13,28,29,30,28,29,30,28,29,30,28,29,30,31,32,30,31,32,30,28,29,30,31,32,30,1,1,21,14,22,33,23,34,35,36,1,11,21,14,22,33,23,34,35,36,1,11,1,14,14,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,43,14,14,1,11,11,23,1,11,23,1,11,31,32,30,14,21,14,22,33,23,1,11,41,43,21,14,22,33,23,34,35,36,1,11,14,53,41,43,21,21,14,22,22,30,33,23,23,34,35,36,51,56,57,1,11,11,53,41,43,21,14,22,30,33,23,34,35,36,51,56,57,1,11,11,1,1,1,1,31,32,30,14,14,2,7,9,13,14,9,13,31,32,30,1,11,33,33,31,32,30,41,43,53,41,43,21,14,22,30,33,23,34,35,36,51,56,57,1,11,53,11,1,1,1,14,14,28,29,30,14,14,28,29,30,28,29,30,28,29,30,33,41,43,14,41,43,41,43,41,43,28,29,14,1,11,28,29,2,7,1,28,29,28,29,28,29,28,29,30,2,7,41,43,41,43,53,28,29,30,28,29,41,43,31,32,31,32,28,29,30,9,13,41,30,1,1,28,29,30,14,33,1,11,14,14,14,14,14,14,14,30,30,30,30,30,30,30,30,14,14,14,30,14,14,31,32,30,14,30,30,14,14,28,29,30,14,14,30,30,30,30,28,29,30,28,29,30,28,29,30,30,30,14,14,14,14,14,14,14,28,29,30,28,29,30,21,14,22,33,23,1,11,28,29,1,1,31,32,30,31,32,30,14,21,14,22,33,23,34,35,36,1,11,21,22,23,11,41,43,41,43,14,14,9,13,53,41,43,21,21,14,22,30,33,23,34,35,36,51,56,57,1,1,11,11,11,11,53,41,43,21,14,22,30,33,23,34,35,36,51,56,57,1,11,53,41,43,21,14,22,30,33,23,34,35,36,51,56,57,1,11,14,14,14,28,29,30,53,41,43,21,14,22,30,33,23,34,35,36,51,56,57,1,11,0,70,71,72,73,72,74,75,74,73,0,0,26,26,26,26,26,26,26,27,26,27,26,27,27,27,27,27,27,27,27,27,27,26,26,26,26,26,26,27,26,26,26,27,26,27,27,26,27,27,26,27,26,26,27,26,26,27,27,27,26,26,27,27,27,27,27,27,26,26,26,26,26,27,26,27,26,27,26,26,26,27,26,27],"f":"``````````````````````````````````````````````````````````````````````````````{bb}{{df}{{l{{j{h}}}}}}{{nf}{{l{{j{h}}}}}}{d{{l{{j{h}}}}}}{n{{l{{j{h}}}}}}{{bb}b}{{bb}A`}{{AbAdAfAh}{{l{{j{h}}}}}}{{AjAdAfAh}{{l{{j{h}}}}}}{Al{{B`{An}}}}{Al{{B`{{Bd{Bb}}}}}}{Al{{B`{Ad}}}}1{bBf}0{bBh}1{BjAn}{BlAn}{BnAn}`{Al{{B`{C`}}}}{Al{{B`{Cb}}}}{ce{}{}}000000000000000000000000000000000`{{}Cd}{AnCf}{Ch{{l{{j{h}}}}}}{Cj{{l{{j{h}}}}}}{ClAh}{Ab{{l{{j{h}}}}}}{Aj{{l{{j{h}}}}}}432432432432{Cn{{l{{j{h}}}}}}{D`{{l{{j{h}}}}}}4104654104{{bb}{{B`{b}}}}0{BjBj}{AlAl}{BlBl}{DbDb}{BnBn}{DdDd}{DfDf}{DhDh}{bb}{AfAf}{{ce}A`{}{}}000000000{{bb}Dj}{Al{{B`{{Bd{Bb}}}}}}0{{Clc}A`{{Dl{Cl}}}}{{Clc}A`{{Dl{ClAn}}}}111111{{Clc}A`{{Dl{Clb}}}}{{Clc}A`{{Dl{ClAh}}}}{{Clc}A`{{Dl{ClBj}}}}{{Clc}A`{{Dl{ClAfb}}}}{{Clc}A`{{Dl{ClDn}}}}3{{Clc}A`{{Dl{ClE`}}}}7{{{Eb{c}}}EdCj}{{{Ef{c}}}EdCh}{Al{{B`{Eh}}}}{{}Al}{{}b}{{}Af}{Afc{}}{c{{Ej{Bn}}}El}{c{{Ej{b}}}El}{c{{Ej{Af}}}El}{c{{Ej{En}}}{{Fb{F`}}}}00{Cn{{l{{j{h}}}}}}{D`{{l{{j{h}}}}}}{Cl{{Fd{Bb}}}}{Al{{B`{C`}}}}{cF`{}}000000{{{Eb{c}}Ff}{{Fh{A`}}}Cj}{{{Ef{c}}Ff}{{Fh{A`}}}Ch}{{BjBj}Ah}{{AlAl}Ah}{{BlBl}Ah}{{DbDb}Ah}{{BnBn}Ah}{{DdDd}Ah}{{DfDf}Ah}{{DhDh}Ah}{{bb}Ah}{{AfAf}Ah}{Al{{B`{Eh}}}}{{FjFl}Fn}{{{Eb{c}}Fl}Fn{}}{{{Ef{c}}Fl}Fn{}}{{BjFl}Fn}0{{AlFl}Fn}{{BlFl}Fn}0{{ClFl}Fn}{{DbFl}Fn}{{BnFl}Fn}0{{DdFl}Fn}{{DfFl}Fn}{{DhFl}Fn}{{FfFl}Fn}{{G`Fl}Fn}{{GbFl}Fn}{{bFl}Fn}{{AfFl}Fn}0{cc{}}0000000000000000{GdAf}{Bfb}000{Cn{{l{{j{h}}}}}}{D`{{l{{j{h}}}}}}{ClAh}{Al{{B`{{Bd{Bb}}}}}}{{AlAn}{{B`{{Gf{c}}}}}{}}{{dGhGhBnAh}{{l{{j{h}}}}}}{{nGhGhBnAh}{{l{{j{h}}}}}}{{Ab{Bd{Af}}}{{l{{j{h}}}}}}{{Aj{Bd{Af}}}{{l{{j{h}}}}}}{{AlAn}{{B`{Gj}}}}{{AbAf}{{l{{j{h}}}}}}{{AjAf}{{l{{j{h}}}}}};:9{{bc}A`Gl}{{Afc}A`Gl}``=<{Cl{{Fd{Bb}}}}{{{Eb{c}}}cCj}{{{Ef{c}}}cCh}{ce{}{}}0000000000000000{c{}{}}{AfGd}{bAh}00{Al{{B`{Eh}}}}{Al{{B`{b}}}}{Ch{{l{{j{h}}}}}}{Cj{{l{{j{h}}}}}}{ClBj}{Al{{B`{{Bd{Bb}}}}}}{Al{{B`{An}}}}43{ClDn}54{Cl{{Fd{Al}}}}651`{{Anc}{{Fh{{Eb{c}}}}}Cj}{{Anc}{{Fh{{Ef{c}}}}}Ch}{{}Al}{{Anc}{{Fh{{Eb{c}}}}}{Ajn}}{{Anc}{{Fh{{Ef{c}}}}}{Abd}}{{Anc}{{Fh{{Eb{c}}}}}n}{{Anc}{{Fh{{Ef{c}}}}}d}{{Anc}{{Fh{{Eb{c}}}}}Aj}{{Anc}{{Fh{{Ef{c}}}}}Ab}?>{{}c{}}00{{ChBb}{{l{{j{h}}}}}}{{CjBb}{{l{{j{h}}}}}}{d{{l{{j{h}}}}}}{n{{l{{j{h}}}}}}{{bb}{{B`{Dj}}}}{Ch{{l{{j{h}}}}}}{Cj{{l{{j{h}}}}}}101010{ClBl}54{{{Eb{c}}Gb}{{Fh{A`}}}n}{{{Ef{c}}Gb}{{Fh{A`}}}d}{{{Eb{c}}e}{{Fh{A`}}}n{{H`{}{{Gn{Dh}}}}}}{{{Ef{c}}e}{{Fh{A`}}}d{{H`{}{{Gn{Dh}}}}}}{{{l{Fj}}Hb}{{Hd{c}}}{}}76{Clb}87{{{Eb{c}}e}{{Fh{A`}}}Cj{{H`{}{{Gn{Dd}}}}}}{{{Ef{c}}e}{{Fh{A`}}}Ch{{H`{}{{Gn{Dd}}}}}}{Cn{{l{{j{h}}}}}}{D`{{l{{j{h}}}}}}10<;{ClDn}{{AbAf}{{l{{j{h}}}}}}{{AjAf}{{l{{j{h}}}}}}{{{Eb{c}}}FjCj}{ClFj}{{bb}b}0{{Chb}{{l{{j{h}}}}}}{{Cjb}{{l{{j{h}}}}}}{{Clb}{{Fh{A`}}}}{{Alc}EjHf}{{Dbc}EjHf}{{bc}EjHf}{{Afc}EjHf}{{AlAn{B`{c}}}{{B`{Gj}}}{{Hh{Gj}}}}{{Al{B`{c}}}A`{{Hh{Bb}}}}{{Al{B`{e}}}A`{{Hh{Bb}}}{{H`{}{{Gn{c}}}}}}{{Al{B`{c}}}A`{{Hh{Ad}}}}1{{Al{B`{C`}}}A`}{{Al{B`{Cb}}}A`}{{ClAh}{{Fh{A`}}}}000000044{{Al{B`{c}}}A`{{Hh{Eh}}}}{{Clc}{{Fh{A`}}}{{Hh{Bb}}}}41{{CnAh}{{l{{j{h}}}}}}{{D`Ah}{{l{{j{h}}}}}}48423{{Al{B`{b}}}A`}{{ChBj}{{l{{j{h}}}}}}{{CjBj}{{l{{j{h}}}}}}{{ClBj}{{Fh{A`}}}}<={{ClDn}{{Fh{A`}}}}{{ClAl}{{Fh{A`}}}}1{{ClBl}{{Fh{A`}}}}{{ChAfb}{{l{{j{h}}}}}}{{CjAfb}{{l{{j{h}}}}}}{{Clb}A`}{{ChDn}{{l{{j{h}}}}}}{{CjDn}{{l{{j{h}}}}}}7{{ChAh}{{l{{j{h}}}}}}{{CjAh}{{l{{j{h}}}}}}{{ClAh}{{Fh{A`}}}}{{Cle}{{Fh{A`}}}{{Hh{Bb}}}{{H`{}{{Gn{c}}}}}}0{{Al{B`{c}}}A`{{Hh{Bb}}}}{{Al{B`{C`}}}A`}{{Al{B`{c}}}A`{{Hh{Af}}}}{{Al{B`{c}}}A`{{Hh{Ad}}}}2{{Al{B`{Cb}}}A`}{{AlAn{B`{Gj}}}{{B`{Gj}}}}{{ChE`}{{l{{j{h}}}}}}{{CjE`}{{l{{j{h}}}}}}{{ClE`}{{Fh{A`}}}}{Ch{{l{{j{h}}}}}}{Cj{{l{{j{h}}}}}}{ClAh}{{}F`}00000032{{bb}b}{{bb}A`}{Cn{{l{{j{h}}}}}}{D`{{l{{j{h}}}}}}{Cl{{Fd{{Bd{Bb}}}}}}210{Al{{B`{An}}}}{ce{}{}}000000000{cBb{}}000{{{Eb{c}}G`}{{Fh{A`}}}Aj}{{{Ef{c}}G`}{{Fh{A`}}}Ab}{{{Eb{c}}e}{{Fh{A`}}}Aj{{H`{}{{Gn{Df}}}}}}{{{Ef{c}}e}{{Fh{A`}}}Ab{{H`{}{{Gn{Df}}}}}}{Al{{B`{C`}}}}{Al{{B`{Af}}}}{Ab{{l{{j{h}}}}}}{Aj{{l{{j{h}}}}}}{c{{Ej{e}}}{}{}}000{Gj{{Ej{Bjc}}}{}}11111111111{Gj{{Ej{bc}}}{}}22{Gj{{Gf{Af}}}}{An{{Gf{Af}}}}{Bb{{Gf{Af}}}}55555555555555555{cHj{}}0000000000000000{Al{{B`{Ad}}}};{Al{{B`{Cb}}}}{Ch{{l{{j{h}}}}}}{Cj{{l{{j{h}}}}}}{ClE`}{ce{}{}}0000000000000000````````````{{Cdc}Cd{{Hh{Bb}}}}{{Cde}Cd{{Hh{Bb}}}{{H`{}{{Gn{c}}}}}}{{Cdc}Cd{{Hh{Ad}}}}1{{CdC`}Cd}{{CdCb}Cd}5555{CdAl}{Cf{{Fh{Cl}}}}{{CfAh}Cf}00000000{CdCd}{{ce}A`{}{}}88{{Cdc}Cd{{Hh{Eh}}}}{{}Cd}{{Cfc}Cf{{Hh{Bb}}}}92{{CdFl}Fn}{{CfFl}Fn}{cc{}}08>83{ce{}{}}06{{Cdb}Cd}{{CfBj}Cf}{{Cde}Cd{{Hh{Bb}}}{{H`{}{{Gn{c}}}}}}{{Cdc}Cd{{Hh{Bb}}}}{{CfDn}Cf}{{CfAl}Cf}1{{}c{}}{{CdAnc}Cd{{Hh{Gj}}}}{{CfBl}Cf}{{Cfb}Cf}5{{CfAh}Cf}{{Cfe}Cf{{Hh{Bb}}}{{H`{}{{Gn{c}}}}}}08<{{CdC`}Cd}{{Cdc}Cd{{Hh{Af}}}}{c{{Ej{e}}}{}{}}000{cHj{}}0{{Cdc}Cd{{Hh{Ad}}}}4{{CdCb}Cd}{{CfE`}Cf}{ce{}{}}0","c":[],"p":[[5,"Time",0],[10,"PlaylistsInterface",0],[8,"PlaylistId",0],[10,"Future",678],[5,"Box",679],[5,"Pin",680],[10,"LocalPlaylistsInterface",0],[1,"unit"],[10,"TrackListInterface",0],[8,"Uri",0],[5,"TrackId",0],[1,"bool"],[10,"LocalTrackListInterface",0],[5,"Metadata",0],[1,"str"],[6,"Option",681],[5,"String",682],[5,"Vec",683],[1,"i64"],[1,"i128"],[6,"LoopStatus",0],[6,"PlaybackStatus",0],[6,"PlaylistOrdering",0],[1,"i32"],[1,"f64"],[5,"MetadataBuilder",604],[5,"PlayerBuilder",604],[10,"PlayerInterface",0],[10,"LocalPlayerInterface",0],[5,"Player",0],[10,"RootInterface",0],[10,"LocalRootInterface",0],[5,"Playlist",0],[6,"Property",0],[6,"TrackListProperty",0],[6,"PlaylistsProperty",0],[6,"Ordering",684],[10,"Fn",685],[8,"PlaybackRate",0],[8,"Volume",0],[5,"LocalServer",0],[5,"Connection",686],[5,"Server",0],[8,"DateTime",0],[6,"Result",687],[10,"Deserializer",688],[6,"Error",689],[5,"Signature",690],[10,"TryInto",691],[5,"Ref",692],[6,"Signal",0],[8,"Result",693],[5,"LocalServerRunTask",0],[5,"Formatter",694],[8,"Result",694],[6,"TrackListSignal",0],[6,"PlaylistsSignal",0],[5,"ObjectPath",695],[8,"Result",689],[1,"u32"],[6,"Value",696],[10,"Hasher",697],[17,"Item"],[10,"IntoIterator",698],[5,"Context",699],[6,"Poll",700],[10,"Serializer",701],[10,"Into",691],[5,"TypeId",702],[15,"PlaylistChanged",595],[15,"Seeked",596],[15,"TrackAdded",597],[15,"TrackListReplaced",597],[15,"TrackMetadataChanged",597],[15,"TrackRemoved",597]],"b":[[248,"impl-Debug-for-LoopStatus"],[249,"impl-Display-for-LoopStatus"],[251,"impl-Debug-for-PlaybackStatus"],[252,"impl-Display-for-PlaybackStatus"],[255,"impl-Display-for-PlaylistOrdering"],[256,"impl-Debug-for-PlaylistOrdering"],[264,"impl-Debug-for-TrackId"],[265,"impl-Display-for-TrackId"],[534,"impl-TryFrom%3CValue%3C\'_%3E%3E-for-TrackId"],[535,"impl-TryFrom%3C%26str%3E-for-TrackId"],[536,"impl-TryFrom%3CString%3E-for-TrackId"]],"a":{"activateplaylist":[79,80],"activeplaylist":[81,82],"addtrack":[85,86],"cancontrol":[138,139],"canedittracks":[141,142],"cangonext":[143,144],"cangoprevious":[146,147],"canpause":[149,150],"canplay":[152,153],"canquit":[155,156],"canraise":[158,159],"canseek":[161,162],"cansetfullscreen":[164,165],"desktopentry":[221,222],"fullscreen":[288,289,434,435],"getplaylists":[293,294],"gettracksmetadata":[295,296],"goto":[298,299],"hastracklist":[300,301],"identity":[307,308],"loop_status":[24],"loopstatus":[336,337,442,443],"maximumrate":[341,342],"metadata":[344,345],"metadata_map":[29],"minimumrate":[347,348],"next":[360,361],"openuri":[365,366],"orderings":[367,368],"org.mpris.mediaplayer2.player":[18,41],"org.mpris.mediaplayer2.playlists":[19,49],"org.mpris.mediaplayer2.tracklist":[23,66],"pause":[370,371],"play":[372,373],"playback_rate":[37],"playback_status":[38],"playbackstatus":[376,377],"playlist_id":[47],"playlist_ordering":[48],"playlistcount":[379,380],"playpause":[374,375],"position":[386,387],"previous":[389,390],"quit":[393,394],"raise":[395,396],"rate":[397,398,454,455],"removetrack":[400,401],"seek":[406,407],"setposition":[451,452],"shuffle":[457,458,472,473],"stop":[482,483],"supportedmimetypes":[486,487],"supportedurischemes":[489,490],"time_in_us":[62],"track_id":[65],"tracks":[513,514],"volume":[469,470,574,575]}}]\
+["mpris_server",{"doc":"MPRIS Server","t":"PPPPPPPPPPPPIPPPPPKKKFFKGPTTPFPPPTPPPIGPFKPFPPPIGKGGGPKPFPGPPPFPPFKGPGPPPIPIPTNMMMMNNMMNNNNNNNNNNNNXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNMMNMMMMNMMNMMNMMNMMNMMNMMNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNMMMMNMMMMNNNOOMMNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNMMNMMNMMNONNNNNNNNNMMNNNMMMMNMMMMMMMMNMMNNNNNMMNMMNNMMMMMMNMMNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNMMNNNNNNNMMNMMNMMNNNNNNNNNNMMNMMNNNNNNNNMMNNMMNMMNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNEOOOOOOOOOFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["ActivePlaylist","Alphabetical","CanEditTracks","CanGoNext","CanGoPrevious","CanPause","CanPlay","CanQuit","CanRaise","CanSeek","CanSetFullscreen","CreationDate","DateTime","DesktopEntry","Fullscreen","HasTrackList","Identity","LastPlayDate","LocalPlayerInterface","LocalPlaylistsInterface","LocalRootInterface","LocalServer","LocalServerRunTask","LocalTrackListInterface","LoopStatus","LoopStatus","MAX","MIN","MaximumRate","Metadata","Metadata","MinimumRate","ModifiedDate","NO_TRACK","None","Orderings","Paused","PlaybackRate","PlaybackStatus","PlaybackStatus","Player","PlayerInterface","Playing","Playlist","Playlist","PlaylistChanged","PlaylistCount","PlaylistId","PlaylistOrdering","PlaylistsInterface","PlaylistsProperty","PlaylistsSignal","Property","Rate","RootInterface","Seeked","Server","Shuffle","Signal","Stopped","SupportedMimeTypes","SupportedUriSchemes","Time","Track","TrackAdded","TrackId","TrackListInterface","TrackListProperty","TrackListReplaced","TrackListSignal","TrackMetadataChanged","TrackRemoved","Tracks","Uri","UserDefined","Volume","Volume","ZERO","abs","activate_playlist","activate_playlist","active_playlist","active_playlist","add","add_assign","add_track","add_track","album","album_artist","alignment","art_url","artist","as_micros","as_millis","as_nanos","as_secs","as_str","as_str","as_str","async_trait","audio_bpm","auto_rating","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","builder","builder","builder","can_control","can_control","can_control","can_edit_tracks","can_edit_tracks","can_go_next","can_go_next","can_go_next","can_go_previous","can_go_previous","can_go_previous","can_pause","can_pause","can_pause","can_play","can_play","can_play","can_quit","can_quit","can_quit","can_raise","can_raise","can_raise","can_seek","can_seek","can_seek","can_set_fullscreen","can_set_fullscreen","can_set_fullscreen","checked_add","checked_sub","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","comment","composer","connect_next","connect_open_uri","connect_pause","connect_play","connect_play_pause","connect_previous","connect_quit","connect_raise","connect_seek","connect_set_fullscreen","connect_set_loop_status","connect_set_position","connect_set_rate","connect_set_shuffle","connect_set_volume","connect_stop","connection","connection","content_created","default","default","default","deref","deserialize","deserialize","deserialize","deserializer_for_signature","deserializer_for_signature","deserializer_for_signature","desktop_entry","desktop_entry","desktop_entry","disc_number","dynamic_signature","dynamic_signature","dynamic_signature","dynamic_signature","dynamic_signature","dynamic_signature","dynamic_signature","emit","emit","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","first_used","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_micros","from_millis","from_nanos","from_secs","fullscreen","fullscreen","fullscreen","genre","get","get_playlists","get_playlists","get_tracks_metadata","get_tracks_metadata","get_value","go_to","go_to","has_track_list","has_track_list","has_track_list","hash","hash","icon","id","identity","identity","identity","imp","imp","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_future","into_inner","is_negative","is_positive","is_zero","last_used","length","loop_status","loop_status","loop_status","lyricist","lyrics","maximum_rate","maximum_rate","maximum_rate","metadata","metadata","metadata","minimum_rate","minimum_rate","minimum_rate","name","new","new","new","new_with_all","new_with_all","new_with_playlists","new_with_playlists","new_with_track_list","new_with_track_list","next","next","null_value","null_value","null_value","open_uri","open_uri","orderings","orderings","partial_cmp","pause","pause","play","play","play_pause","play_pause","playback_status","playback_status","playback_status","playlist_count","playlist_count","playlists_emit","playlists_emit","playlists_properties_changed","playlists_properties_changed","poll","position","position","position","previous","previous","properties_changed","properties_changed","quit","quit","raise","raise","rate","rate","rate","remove_track","remove_track","run","run","saturating_add","saturating_sub","seek","seek","seeked","serialize","serialize","serialize","serialize","set","set_album","set_album_artist","set_art_url","set_artist","set_audio_bpm","set_auto_rating","set_can_go_next","set_can_go_previous","set_can_pause","set_can_play","set_can_quit","set_can_raise","set_can_seek","set_can_set_fullscreen","set_comment","set_composer","set_content_created","set_desktop_entry","set_disc_number","set_first_used","set_fullscreen","set_fullscreen","set_fullscreen","set_genre","set_has_track_list","set_identity","set_last_used","set_length","set_loop_status","set_loop_status","set_loop_status","set_lyricist","set_lyrics","set_maximum_rate","set_metadata","set_minimum_rate","set_playback_status","set_position","set_position","set_position","set_rate","set_rate","set_rate","set_shuffle","set_shuffle","set_shuffle","set_supported_mime_types","set_supported_uri_schemes","set_title","set_track_number","set_trackid","set_url","set_use_count","set_user_rating","set_value","set_volume","set_volume","set_volume","shuffle","shuffle","shuffle","signature","signature","signature","signature","signature","signature","signature","stop","stop","sub","sub_assign","supported_mime_types","supported_mime_types","supported_mime_types","supported_uri_schemes","supported_uri_schemes","supported_uri_schemes","title","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","track_list_emit","track_list_emit","track_list_properties_changed","track_list_properties_changed","track_number","trackid","tracks","tracks","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","use_count","user_rating","volume","volume","volume","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zbus","playlist","position","after_track","current_track","metadata","metadata","track_id","track_id","tracks","MetadataBuilder","PlayerBuilder","album","album_artist","art_url","artist","audio_bpm","auto_rating","borrow","borrow","borrow_mut","borrow_mut","build","build","can_control","can_go_next","can_go_previous","can_pause","can_play","can_quit","can_raise","can_seek","can_set_fullscreen","clone","clone_into","comment","composer","content_created","default","desktop_entry","disc_number","first_used","fmt","fmt","from","from","fullscreen","genre","has_track_list","identity","into","into","last_used","length","loop_status","lyricist","lyrics","maximum_rate","metadata","minimum_rate","null_value","other","playback_status","position","rate","shuffle","supported_mime_types","supported_uri_schemes","title","to_owned","track_number","trackid","try_from","try_from","try_into","try_into","type_id","type_id","url","use_count","user_rating","volume","vzip","vzip"],"q":[[0,"mpris_server"],[596,"mpris_server::PlaylistsSignal"],[597,"mpris_server::Signal"],[598,"mpris_server::TrackListSignal"],[605,"mpris_server::builder"],[679,"core::future::future"],[680,"alloc::boxed"],[681,"core::pin"],[682,"core::option"],[683,"alloc::string"],[684,"alloc::vec"],[685,"zvariant::serialized::format"],[686,"core::cmp"],[687,"core::ops::function"],[688,"zbus::connection"],[689,"core::result"],[690,"serde::de"],[691,"zvariant::error"],[692,"zvariant::signature"],[693,"core::convert"],[694,"core::cell"],[695,"zbus::error"],[696,"core::fmt"],[697,"core::fmt"],[698,"zvariant::error"],[699,"core::hash"],[700,"core::iter::traits::collect"],[701,"core::task::wake"],[702,"core::task::poll"],[703,"serde::ser"],[704,"core::convert"]],"d":["","Alphabetical ordering by name, ascending.","","","","","","","","","","Ordering by creation date, oldest first.","Combined date and time.","","","","","Ordering by date of last playback, oldest first.","Local version of PlayerInterface to be used with …","Local version of PlaylistsInterface to be used with …","Local version of RootInterface to be used with LocalServer.","Local version of Server that doesn’t require T to be Send…","A task that runs LocalServer’s event handler until the …","Local version of TrackListInterface to be used with …","A repeat / loop status.","","The maximum time.","The minimum time.","","A mapping from metadata attribute names to values.","","","Ordering by last modified date, oldest first.","A special track ID to indicate “no track”.","The playback will stop when there are no more tracks to …","","A track is currently paused.","A playback rate.","A playback state.","","Ready-to-use mutable service-side object that internally …","Used to implement org.mpris.MediaPlayer2.Player interface, …","A track is currently playing.","A data structure describing a playlist.","The playback loops through a list of tracks.","Indicates that either the Name or Icon attribute of a …","","Unique playlist identifier.","Specifies the ordering of returned playlists.","Used to implement org.mpris.MediaPlayer2.Playlists …","Used for emitting PropertiesChanged signals on …","Used for emitting signals on Server::playlists_emit and …","Used for emitting PropertiesChanged signals on …","","Used to implement org.mpris.MediaPlayer2 interface.","Indicates that the track position has changed in a way …","Thin wrapper around zbus::Connection that calls to T’s …","","Used for emitting signals on Server::emit and …","There is no track currently playing.","","","A time with microsecond precision which can be negative.","The current track will start again from the beginning once …","Indicates that a track has been added to the track list.","Unique track identifier.","Used to implement org.mpris.MediaPlayer2.TrackList …","Used for emitting PropertiesChanged signals on …","Indicates that the entire tracklist has been replaced.","Used for emitting signals on Server::track_list_emit and …","Indicates that the metadata of a track in the tracklist …","Indicates that a track has been removed from the track …","","A unique resource identifier.","A user-defined ordering.","Audio volume level.","","A time of zero.","Returns the time as an absolute (non-negative) value.","Starts playing the given playlist.","Starts playing the given playlist.","The currently-active playlist.","The currently-active playlist.","","","Adds a URI in the tracklist.","Adds a URI in the tracklist.","The album name.","The album artist(s).","","The location of an image representing the track or album.","The track artist(s).","Returns the number of whole microseconds contained by this …","Returns the number of whole milliseconds contained by this …","Returns the number of whole nanoseconds contained by this …","Returns the number of whole seconds contained by this Time.","Returns the string representation of this loop status.","Returns the string representation of this playback status.","Returns the string representation of this playlist …","Retrofits support for async fn in trait impls and …","The speed of the music, in beats per minute.","An automatically-generated rating, based on things such as …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This contains the definitions of builder-pattern structs.","Creates a new builder-pattern struct instance to construct …","","Whether the media player may be controlled over this …","Whether the media player may be controlled over this …","This can only be set on construct.","Whether tracks can be added to and removed from the …","Whether tracks can be added to and removed from the …","Whether the client can call the Next method on this …","Whether the client can call the Next method on this …","","Whether the client can call the Previous method on this …","Whether the client can call the Previous method on this …","","Whether playback can be paused using Pause or PlayPause.","Whether playback can be paused using Pause or PlayPause.","","Whether playback can be started using Play or PlayPause.","Whether playback can be started using Play or PlayPause.","","Whether the player may be asked to quit.","Whether the player may be asked to quit.","","Whether the media player may be asked to be raised.","Whether the media player may be asked to be raised.","","Whether the client can control the playback position using …","Whether the client can control the playback position using …","","Whether the player may be asked to enter or leave …","Whether the player may be asked to enter or leave …","","Checked Time addition. Computes self + other, returning …","Checked Time subtraction. Computes self - other, returning …","","","","","","","","","","","","","","","","","","","","","","A (list of) freeform comment(s).","The composer(s) of the track.","","","","","","","","","","","","","","","","","Returns a reference to the inner Connection.","Returns a reference to the inner Connection.","When the track was created. Usually only the year component","","","","","","","","","","","The basename of an installed .desktop file which complies …","The basename of an installed .desktop file which complies …","","The disc number on the album that this track is from.","","","","","","","","Emits the given signal.","Emits the given signal.","","","","","","","","","","","When the track was first played.","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Creates a new Time from the specified number of whole …","Creates a new Time from the specified number of whole …","Creates a new Time from the specified number of whole …","Creates a new Time from the specified number of whole …","Whether the media player is occupying the fullscreen.","Whether the media player is occupying the fullscreen.","","The genre(s) of the track.","Returns the value corresponding to the key and convert it …","Gets a set of playlists.","Gets a set of playlists.","Gets all the metadata available for a set of tracks.","Gets all the metadata available for a set of tracks.","Returns a reference to the value corresponding to the key.","Skip to the specified TrackId.","Skip to the specified TrackId.","Indicates whether the /org/mpris/MediaPlayer2 object …","Indicates whether the /org/mpris/MediaPlayer2 object …","","","","The URI of an (optional) icon.","A unique identifier for the playlist.","A friendly name to identify the media player to users (eg: …","A friendly name to identify the media player to users (eg: …","","Returns a reference to the underlying implementation.","Returns a reference to the underlying implementation.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Returns the track ID as an ObjectPath.","Returns true if this Time is negative.","Returns true if this Time is positive.","Returns true if this Time is zero.","When the track was last played.","The duration of the track.","The current loop / repeat status","The current loop / repeat status","","The lyricist(s) of the track.","The track lyrics.","The maximum value which the Rate property can take. …","The maximum value which the Rate property can take. …","","The metadata of the current element.","The metadata of the current element.","","The minimum value which the Rate property can take. …","The minimum value which the Rate property can take. …","","The name of the playlist, typically given by the user.","Creates a new LocalServer with the given bus name suffix …","Creates a new Server with the given bus name suffix and …","Creates an empty Metadata.","Creates a new LocalServer with the given bus name suffix …","Creates a new Server with the given bus name suffix and …","Creates a new LocalServer with the given bus name suffix …","Creates a new Server with the given bus name suffix and …","Creates a new LocalServer with the given bus name suffix …","Creates a new Server with the given bus name suffix and …","Skips to the next track in the tracklist.","Skips to the next track in the tracklist.","","","","Opens the uri given as an argument","Opens the uri given as an argument","The available orderings. At least one must be offered.","The available orderings. At least one must be offered.","","Pauses playback.","Pauses playback.","Starts or resumes playback.","Starts or resumes playback.","Pauses playback.","Pauses playback.","The current playback status.","The current playback status.","","The number of playlists available.","The number of playlists available.","Emits the given signal on the Playlists interface.","Emits the given signal on the Playlists interface.","Emits the PropertiesChanged signal for the given …","Emits the PropertiesChanged signal for the given …","","The current track position, between 0 and the mpris:length …","The current track position, between 0 and the mpris:length …","","Skips to the previous track in the tracklist.","Skips to the previous track in the tracklist.","Emits the PropertiesChanged signal for the given …","Emits the PropertiesChanged signal for the given …","Causes the media player to stop running.","Causes the media player to stop running.","Brings the media player’s user interface to the front …","Brings the media player’s user interface to the front …","The current playback rate.","The current playback rate.","","Removes an item from the tracklist.","Removes an item from the tracklist.","Returns a task that run the server until the server and …","Returns a task that runs the player’s server until the …","Saturating Time addition. Computes self + other, returning …","Saturating Time subtraction. Computes self - other, …","Seeks forward in the current track by the specified offset …","Seeks forward in the current track by the specified offset …","","","","","","Sets the value for the given key and returns the previous …","Sets the album name.","Sets the album artist(s).","Sets the location of an image representing the track or …","Sets the track artist(s).","Sets the speed of the music, in beats per minute.","Sets an automatically-generated rating, based on things …","","","","","","","","","Sets a (list of) freeform comment(s).","Sets the composer(s) of the track.","Sets when the track was created. Usually only the year …","","Sets the disc number on the album that this track is from.","Sets when the track was first played.","Sets whether the media player is occupying the fullscreen.","Sets whether the media player is occupying the fullscreen.","","Sets the genre(s) of the track.","","","Sets when the track was last played.","Sets the duration of the track.","Sets the current loop / repeat status","Sets the current loop / repeat status","","Sets the lyricist(s) of the track.","Sets the track lyrics.","","","","","Sets the current track position.","Sets the current track position.","This does not emit PropertiesChanged signal.","Sets the current playback rate.","Sets the current playback rate.","","Sets whether playback is shuffled.","Sets whether playback is shuffled.","","","","Sets the track title.","Sets the track number on the album disc.","Sets a unique identity for this track within the context …","Sets the location of the media file.","Sets the number of times the track has been played.","Sets a user-specified rating. This should be in the range …","Sets the value for the given key and returns the previous …","Sets the volume level.","Sets the volume level.","","Whether playback is shuffled.","Whether playback is shuffled.","","","","","","","","","Stops playback.","Stops playback.","","","The mime-types supported by the media player.","The mime-types supported by the media player.","","The URI schemes supported by the media player.","The URI schemes supported by the media player.","","The track title.","","","","","","","","","","","","","","","Emits the given signal on the TrackList interface.","Emits the given signal on the TrackList interface.","Emits the PropertiesChanged signal for the given …","Emits the PropertiesChanged signal for the given …","The track number on the album disc.","A unique identity for this track within the context of an …","An array which contains the identifier of each track in …","An array which contains the identifier of each track in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The location of the media file.","The number of times the track has been played.","A user-specified rating. This should be in the range 0.0 …","The volume level.","The volume level.","","","","","","","","","","","","","","","","","","","","The playlist which details have changed.","The new position.","The identifier of the track after which the new track was …","The identifier of the track to be considered as current.","The metadata of the newly added item.","The new track metadata.","The identifier of the track being removed.","The id of the track which metadata has changed.","The new content of the tracklist.","A builder used to create Metadata.","A builder used to create Player.","Sets the album name.","Sets the album artist(s).","Sets the location of an image representing the track or …","Sets the track artist(s).","Sets the speed of the music, in beats per minute.","Sets an automatically-generated rating, based on things …","","","","","Creates Metadata from the builder.","","","","","","","","","","","","","Sets a (list of) freeform comment(s).","Sets the composer(s) of the track.","Sets when the track was created. Usually only the year …","","","Sets the disc number on the album that this track is from.","Sets when the track was first played.","","","Returns the argument unchanged.","Returns the argument unchanged.","","Sets the genre(s) of the track.","","","Calls U::from(self).","Calls U::from(self).","Sets when the track was last played.","Sets the duration of the track.","","Sets the lyricist(s) of the track.","Sets the track lyrics.","","","","","Sets a value for the given key.","","","","","","","Sets the track title.","","Sets the track number on the album disc.","Sets a unique identity for this track within the context …","","","","","","","Sets the location of the media file.","Sets the number of times the track has been played.","Sets a user-specified rating. This should be in the range …","","",""],"i":[38,25,37,36,36,36,36,36,36,36,36,25,0,36,36,36,36,25,0,0,0,0,0,0,0,36,1,1,36,0,36,36,25,11,23,38,24,0,0,36,0,0,24,0,23,59,38,0,0,0,0,0,0,36,0,53,0,36,0,24,36,36,0,23,58,0,0,0,58,0,58,58,37,0,25,0,36,1,1,2,7,2,7,1,1,9,13,14,14,11,14,14,1,1,1,1,23,24,25,0,14,14,55,43,45,23,14,24,32,35,25,36,37,38,53,58,59,1,11,55,43,45,23,14,24,32,35,25,36,37,38,53,58,59,1,11,0,14,32,30,31,32,9,13,30,31,32,30,31,32,30,31,32,30,31,32,33,34,32,33,34,32,30,31,32,33,34,32,1,1,23,14,24,35,25,36,37,38,1,11,23,14,24,35,25,36,37,38,1,11,1,14,14,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,43,45,14,14,1,11,11,25,1,11,25,1,11,33,34,32,14,23,14,24,35,25,1,11,43,45,23,14,24,35,25,36,37,38,1,11,14,55,43,45,23,23,14,24,24,32,35,25,25,36,37,38,53,58,59,1,11,11,55,43,45,23,14,24,32,35,25,36,37,38,53,58,59,1,11,11,1,1,1,1,33,34,32,14,14,2,7,9,13,14,9,13,33,34,32,1,11,35,35,33,34,32,43,45,55,43,45,23,14,24,32,35,25,36,37,38,53,58,59,1,11,55,11,1,1,1,14,14,30,31,32,14,14,30,31,32,30,31,32,30,31,32,35,43,45,14,43,45,43,45,43,45,30,31,14,1,11,30,31,2,7,1,30,31,30,31,30,31,30,31,32,2,7,43,45,43,45,55,30,31,32,30,31,43,45,33,34,33,34,30,31,32,9,13,43,32,1,1,30,31,32,14,35,1,11,14,14,14,14,14,14,14,32,32,32,32,32,32,32,32,14,14,14,32,14,14,33,34,32,14,32,32,14,14,30,31,32,14,14,32,32,32,32,30,31,32,30,31,32,30,31,32,32,32,14,14,14,14,14,14,14,30,31,32,30,31,32,23,14,24,35,25,1,11,30,31,1,1,33,34,32,33,34,32,14,23,14,24,35,25,36,37,38,1,11,23,24,25,11,43,45,43,45,14,14,9,13,55,43,45,23,23,14,24,32,35,25,36,37,38,53,58,59,1,1,11,11,11,11,55,43,45,23,14,24,32,35,25,36,37,38,53,58,59,1,11,55,43,45,23,14,24,32,35,25,36,37,38,53,58,59,1,11,14,14,14,30,31,32,55,43,45,23,14,24,32,35,25,36,37,38,53,58,59,1,11,0,72,73,74,75,74,76,77,76,75,0,0,28,28,28,28,28,28,28,29,28,29,28,29,29,29,29,29,29,29,29,29,29,28,28,28,28,28,28,29,28,28,28,29,28,29,29,28,29,29,28,29,28,28,29,28,28,29,29,29,28,28,29,29,29,29,29,29,28,28,28,28,28,29,28,29,28,29,28,28,28,29,28,29],"f":"``````````````````````````````````````````````````````````````````````````````{bb}{{df}{{l{{j{h}}}}}}{{nf}{{l{{j{h}}}}}}{d{{l{{j{h}}}}}}{n{{l{{j{h}}}}}}{{bb}b}{{bb}A`}{{AbAdAfAh}{{l{{j{h}}}}}}{{AjAdAfAh}{{l{{j{h}}}}}}{Al{{B`{An}}}}{Al{{B`{{Bd{Bb}}}}}}{BfBh}{Al{{B`{Ad}}}}2{bBj}0{bBl}1{BnAn}{C`An}{CbAn}`{Al{{B`{Cd}}}}{Al{{B`{Cf}}}}{ce{}{}}000000000000000000000000000000000`{{}Ch}{AnCj}{Cl{{l{{j{h}}}}}}{Cn{{l{{j{h}}}}}}{D`Ah}{Ab{{l{{j{h}}}}}}{Aj{{l{{j{h}}}}}}432432432432{Db{{l{{j{h}}}}}}{Dd{{l{{j{h}}}}}}4104654104{{bb}{{B`{b}}}}0{BnBn}{AlAl}{C`C`}{DfDf}{CbCb}{DhDh}{DjDj}{DlDl}{bb}{AfAf}{{ce}A`{}{}}000000000{{bb}Dn}{Al{{B`{{Bd{Bb}}}}}}0{{D`c}A`{{E`{D`}}}}{{D`c}A`{{E`{D`An}}}}111111{{D`c}A`{{E`{D`b}}}}{{D`c}A`{{E`{D`Ah}}}}{{D`c}A`{{E`{D`Bn}}}}{{D`c}A`{{E`{D`Afb}}}}{{D`c}A`{{E`{D`Eb}}}}3{{D`c}A`{{E`{D`Ed}}}}7{{{Ef{c}}}EhCn}{{{Ej{c}}}EhCl}{Al{{B`{El}}}}{{}Al}{{}b}{{}Af}{Afc{}}{c{{En{Cb}}}F`}{c{{En{b}}}F`}{c{{En{Af}}}F`}{c{{En{Fb}}}{{Ff{Fd}}}}00{Db{{l{{j{h}}}}}}{Dd{{l{{j{h}}}}}}{D`{{Fh{Bb}}}}{Al{{B`{Cd}}}}{cFd{}}000000{{{Ef{c}}Fj}{{Fl{A`}}}Cn}{{{Ej{c}}Fj}{{Fl{A`}}}Cl}{{BnBn}Ah}{{AlAl}Ah}{{C`C`}Ah}{{DfDf}Ah}{{CbCb}Ah}{{DhDh}Ah}{{DjDj}Ah}{{DlDl}Ah}{{bb}Ah}{{AfAf}Ah}{Al{{B`{El}}}}{{FnG`}Gb}{{{Ef{c}}G`}Gb{}}{{{Ej{c}}G`}Gb{}}{{BnG`}Gb}0{{AlG`}Gb}{{C`G`}Gb}0{{D`G`}Gb}{{DfG`}Gb}{{CbG`}Gb}0{{DhG`}Gb}{{DjG`}Gb}{{DlG`}Gb}{{FjG`}Gb}{{GdG`}Gb}{{GfG`}Gb}{{bG`}Gb}{{AfG`}Gb}0{cc{}}000000000000000{GhAf}1{Bjb}000{Db{{l{{j{h}}}}}}{Dd{{l{{j{h}}}}}}{D`Ah}{Al{{B`{{Bd{Bb}}}}}}{{AlAn}{{B`{{Gj{c}}}}}{}}{{dGlGlCbAh}{{l{{j{h}}}}}}{{nGlGlCbAh}{{l{{j{h}}}}}}{{Ab{Bd{Af}}}{{l{{j{h}}}}}}{{Aj{Bd{Af}}}{{l{{j{h}}}}}}{{AlAn}{{B`{Gn}}}}{{AbAf}{{l{{j{h}}}}}}{{AjAf}{{l{{j{h}}}}}};:9{{bc}A`H`}{{Afc}A`H`}``=<{D`{{Fh{Bb}}}}{{{Ef{c}}}cCn}{{{Ej{c}}}cCl}{ce{}{}}0000000000000000{c{}{}}{AfGh}{bAh}00{Al{{B`{El}}}}{Al{{B`{b}}}}{Cl{{l{{j{h}}}}}}{Cn{{l{{j{h}}}}}}{D`Bn}{Al{{B`{{Bd{Bb}}}}}}{Al{{B`{An}}}}43{D`Eb}54{D`{{Fh{Al}}}}651`{{Anc}{{Fl{{Ef{c}}}}}Cn}{{Anc}{{Fl{{Ej{c}}}}}Cl}{{}Al}{{Anc}{{Fl{{Ef{c}}}}}{Ajn}}{{Anc}{{Fl{{Ej{c}}}}}{Abd}}{{Anc}{{Fl{{Ef{c}}}}}n}{{Anc}{{Fl{{Ej{c}}}}}d}{{Anc}{{Fl{{Ef{c}}}}}Aj}{{Anc}{{Fl{{Ej{c}}}}}Ab}?>{{}c{}}00{{ClBb}{{l{{j{h}}}}}}{{CnBb}{{l{{j{h}}}}}}{d{{l{{j{h}}}}}}{n{{l{{j{h}}}}}}{{bb}{{B`{Dn}}}}{Cl{{l{{j{h}}}}}}{Cn{{l{{j{h}}}}}}101010{D`C`}54{{{Ef{c}}Gf}{{Fl{A`}}}n}{{{Ej{c}}Gf}{{Fl{A`}}}d}{{{Ef{c}}e}{{Fl{A`}}}n{{Hd{}{{Hb{Dl}}}}}}{{{Ej{c}}e}{{Fl{A`}}}d{{Hd{}{{Hb{Dl}}}}}}{{{l{Fn}}Hf}{{Hh{c}}}{}}76{D`b}87{{{Ef{c}}e}{{Fl{A`}}}Cn{{Hd{}{{Hb{Dh}}}}}}{{{Ej{c}}e}{{Fl{A`}}}Cl{{Hd{}{{Hb{Dh}}}}}}{Db{{l{{j{h}}}}}}{Dd{{l{{j{h}}}}}}10<;{D`Eb}{{AbAf}{{l{{j{h}}}}}}{{AjAf}{{l{{j{h}}}}}}{{{Ef{c}}}FnCn}{D`Fn}{{bb}b}0{{Clb}{{l{{j{h}}}}}}{{Cnb}{{l{{j{h}}}}}}{{D`b}{{Fl{A`}}}}{{Alc}EnHj}{{Dfc}EnHj}{{bc}EnHj}{{Afc}EnHj}{{AlAn{B`{c}}}{{B`{Gn}}}{{Hl{Gn}}}}{{Al{B`{c}}}A`{{Hl{Bb}}}}{{Al{B`{e}}}A`{{Hl{Bb}}}{{Hd{}{{Hb{c}}}}}}{{Al{B`{c}}}A`{{Hl{Ad}}}}1{{Al{B`{Cd}}}A`}{{Al{B`{Cf}}}A`}{{D`Ah}{{Fl{A`}}}}000000044{{Al{B`{c}}}A`{{Hl{El}}}}{{D`c}{{Fl{A`}}}{{Hl{Bb}}}}41{{DbAh}{{l{{j{h}}}}}}{{DdAh}{{l{{j{h}}}}}}48423{{Al{B`{b}}}A`}{{ClBn}{{l{{j{h}}}}}}{{CnBn}{{l{{j{h}}}}}}{{D`Bn}{{Fl{A`}}}}<={{D`Eb}{{Fl{A`}}}}{{D`Al}{{Fl{A`}}}}1{{D`C`}{{Fl{A`}}}}{{ClAfb}{{l{{j{h}}}}}}{{CnAfb}{{l{{j{h}}}}}}{{D`b}A`}{{ClEb}{{l{{j{h}}}}}}{{CnEb}{{l{{j{h}}}}}}7{{ClAh}{{l{{j{h}}}}}}{{CnAh}{{l{{j{h}}}}}}{{D`Ah}{{Fl{A`}}}}{{D`e}{{Fl{A`}}}{{Hl{Bb}}}{{Hd{}{{Hb{c}}}}}}0{{Al{B`{c}}}A`{{Hl{Bb}}}}{{Al{B`{Cd}}}A`}{{Al{B`{c}}}A`{{Hl{Af}}}}{{Al{B`{c}}}A`{{Hl{Ad}}}}2{{Al{B`{Cf}}}A`}{{AlAn{B`{Gn}}}{{B`{Gn}}}}{{ClEd}{{l{{j{h}}}}}}{{CnEd}{{l{{j{h}}}}}}{{D`Ed}{{Fl{A`}}}}{Cl{{l{{j{h}}}}}}{Cn{{l{{j{h}}}}}}{D`Ah}{{}Fd}00000032{{bb}b}{{bb}A`}{Db{{l{{j{h}}}}}}{Dd{{l{{j{h}}}}}}{D`{{Fh{{Bd{Bb}}}}}}210{Al{{B`{An}}}}{ce{}{}}000000000{cBb{}}000{{{Ef{c}}Gd}{{Fl{A`}}}Aj}{{{Ej{c}}Gd}{{Fl{A`}}}Ab}{{{Ef{c}}e}{{Fl{A`}}}Aj{{Hd{}{{Hb{Dj}}}}}}{{{Ej{c}}e}{{Fl{A`}}}Ab{{Hd{}{{Hb{Dj}}}}}}{Al{{B`{Cd}}}}{Al{{B`{Af}}}}{Ab{{l{{j{h}}}}}}{Aj{{l{{j{h}}}}}}{c{{En{e}}}{}{}}00{Gn{{En{Bnc}}}{}}111111111111{Gn{{En{bc}}}{}}22{Gn{{Gj{Af}}}}{An{{Gj{Af}}}}{Bb{{Gj{Af}}}}55555555555555555{cHn{}}0000000000000000{Al{{B`{Ad}}}};{Al{{B`{Cf}}}}{Cl{{l{{j{h}}}}}}{Cn{{l{{j{h}}}}}}{D`Ed}{ce{}{}}0000000000000000````````````{{Chc}Ch{{Hl{Bb}}}}{{Che}Ch{{Hl{Bb}}}{{Hd{}{{Hb{c}}}}}}{{Chc}Ch{{Hl{Ad}}}}1{{ChCd}Ch}{{ChCf}Ch}5555{ChAl}{Cj{{Fl{D`}}}}{{CjAh}Cj}00000000{ChCh}{{ce}A`{}{}}88{{Chc}Ch{{Hl{El}}}}{{}Ch}{{Cjc}Cj{{Hl{Bb}}}}92{{ChG`}Gb}{{CjG`}Gb}{cc{}}08>83{ce{}{}}06{{Chb}Ch}{{CjBn}Cj}{{Che}Ch{{Hl{Bb}}}{{Hd{}{{Hb{c}}}}}}{{Chc}Ch{{Hl{Bb}}}}{{CjEb}Cj}{{CjAl}Cj}1{{}c{}}{{ChAnc}Ch{{Hl{Gn}}}}{{CjC`}Cj}{{Cjb}Cj}5{{CjAh}Cj}{{Cje}Cj{{Hl{Bb}}}{{Hd{}{{Hb{c}}}}}}08<{{ChCd}Ch}{{Chc}Ch{{Hl{Af}}}}{c{{En{e}}}{}{}}000{cHn{}}0{{Chc}Ch{{Hl{Ad}}}}4{{ChCf}Ch}{{CjEd}Cj}{ce{}{}}0","c":[],"p":[[5,"Time",0],[10,"PlaylistsInterface",0],[8,"PlaylistId",0],[10,"Future",679],[5,"Box",680],[5,"Pin",681],[10,"LocalPlaylistsInterface",0],[1,"unit"],[10,"TrackListInterface",0],[8,"Uri",0],[5,"TrackId",0],[1,"bool"],[10,"LocalTrackListInterface",0],[5,"Metadata",0],[1,"str"],[6,"Option",682],[5,"String",683],[5,"Vec",684],[6,"Format",685],[1,"usize"],[1,"i64"],[1,"i128"],[6,"LoopStatus",0],[6,"PlaybackStatus",0],[6,"PlaylistOrdering",0],[1,"i32"],[1,"f64"],[5,"MetadataBuilder",605],[5,"PlayerBuilder",605],[10,"PlayerInterface",0],[10,"LocalPlayerInterface",0],[5,"Player",0],[10,"RootInterface",0],[10,"LocalRootInterface",0],[5,"Playlist",0],[6,"Property",0],[6,"TrackListProperty",0],[6,"PlaylistsProperty",0],[6,"Ordering",686],[10,"Fn",687],[8,"PlaybackRate",0],[8,"Volume",0],[5,"LocalServer",0],[5,"Connection",688],[5,"Server",0],[8,"DateTime",0],[6,"Result",689],[10,"Deserializer",690],[6,"Error",691],[5,"Signature",692],[10,"TryInto",693],[5,"Ref",694],[6,"Signal",0],[8,"Result",695],[5,"LocalServerRunTask",0],[5,"Formatter",696],[8,"Result",696],[6,"TrackListSignal",0],[6,"PlaylistsSignal",0],[5,"ObjectPath",697],[8,"Result",691],[1,"u32"],[6,"Value",698],[10,"Hasher",699],[17,"Item"],[10,"IntoIterator",700],[5,"Context",701],[6,"Poll",702],[10,"Serializer",703],[10,"Into",693],[5,"TypeId",704],[15,"PlaylistChanged",596],[15,"Seeked",597],[15,"TrackAdded",598],[15,"TrackListReplaced",598],[15,"TrackMetadataChanged",598],[15,"TrackRemoved",598]],"b":[[249,"impl-Display-for-LoopStatus"],[250,"impl-Debug-for-LoopStatus"],[252,"impl-Display-for-PlaybackStatus"],[253,"impl-Debug-for-PlaybackStatus"],[256,"impl-Display-for-PlaylistOrdering"],[257,"impl-Debug-for-PlaylistOrdering"],[265,"impl-Display-for-TrackId"],[266,"impl-Debug-for-TrackId"],[535,"impl-TryFrom%3CValue%3C\'_%3E%3E-for-TrackId"],[536,"impl-TryFrom%3C%26str%3E-for-TrackId"],[537,"impl-TryFrom%3CString%3E-for-TrackId"]],"a":{"activateplaylist":[79,80],"activeplaylist":[81,82],"addtrack":[85,86],"cancontrol":[139,140],"canedittracks":[142,143],"cangonext":[144,145],"cangoprevious":[147,148],"canpause":[150,151],"canplay":[153,154],"canquit":[156,157],"canraise":[159,160],"canseek":[162,163],"cansetfullscreen":[165,166],"desktopentry":[222,223],"fullscreen":[289,290,435,436],"getplaylists":[294,295],"gettracksmetadata":[296,297],"goto":[299,300],"hastracklist":[301,302],"identity":[308,309],"loop_status":[24],"loopstatus":[337,338,443,444],"maximumrate":[342,343],"metadata":[345,346],"metadata_map":[29],"minimumrate":[348,349],"next":[361,362],"openuri":[366,367],"orderings":[368,369],"org.mpris.mediaplayer2.player":[18,41],"org.mpris.mediaplayer2.playlists":[19,49],"org.mpris.mediaplayer2.tracklist":[23,66],"pause":[371,372],"play":[373,374],"playback_rate":[37],"playback_status":[38],"playbackstatus":[377,378],"playlist_id":[47],"playlist_ordering":[48],"playlistcount":[380,381],"playpause":[375,376],"position":[387,388],"previous":[390,391],"quit":[394,395],"raise":[396,397],"rate":[398,399,455,456],"removetrack":[401,402],"seek":[407,408],"setposition":[452,453],"shuffle":[458,459,473,474],"stop":[483,484],"supportedmimetypes":[487,488],"supportedurischemes":[490,491],"time_in_us":[62],"track_id":[65],"tracks":[514,515],"volume":[470,471,575,576]}}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/settings.html b/settings.html
index a84d957..7e84e24 100644
--- a/settings.html
+++ b/settings.html
@@ -1,2 +1,2 @@
-Settings
\ No newline at end of file
diff --git a/src/mpris_server/lib.rs.html b/src/mpris_server/lib.rs.html
index 8118f23..166a163 100644
--- a/src/mpris_server/lib.rs.html
+++ b/src/mpris_server/lib.rs.html
@@ -1,4 +1,4 @@
-lib.rs - source
}
struct InnerImp<T> {
- tx: mpsc::UnboundedSender<Action>,
+ tx: Sender<Action>,
// If we use `PhantomData<T>` and `T` is not `Send` and `Sync`, we get a compile error
// when using `InnerImp` in the inner non-local `Server` as it requires `T` to be `Send`
@@ -1165,20 +1173,20 @@
/// The task must be awaited as soon as possible after creating the server.
///
/// The returned task is no-op if the server has been ran before.
- pub fn run(&self) -> LocalServerRunTask {
- LocalServerRunTask {
- inner: self.runner.take(),
+ pub fn run(&self) -> LocalServerRunTask {
+ LocalServerRunTask {
+ inner: self.runner.take(),
}
}
/// Returns a reference to the underlying implementation.
#[inline]
pub fn imp(&self) -> &T {
- &self.imp
+ &self.imp
}
/// Returns a reference to the inner [`Connection`].
@@ -1646,7 +1662,7 @@
/// [`mpris:trackid`]: Metadata::set_trackid
/// [`mpris:length`]: Metadata::set_length
/// [`mpris:artUrl`]: Metadata::set_art_url
-#[derive(Clone, PartialEq, Serialize, Type)]
+#[derive(PartialEq, Serialize, Type)]
#[serde(transparent)]
#[zvariant(signature = "a{sv}")]
#[doc(alias = "Metadata_Map")]
pub struct Metadata(HashMap<String, Value<'static>>);
+impl Clonefor Metadata {
+ fn clone(&self) -> Self {
+ // TODO Make this more efficient
+ Self(
+ self.0
+ .iter()
+ .map(|(k, v)| (k.clone(), v.try_clone().expect("metadata contained an fd")))
+ .collect::<HashMap<_, _>>(),
+ )
+ }
+}
+
impl fmt::Debugfor Metadata {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- fmt::Debug::fmt(&self.0, f)
+ fmt::Debug::fmt(&self.0, f)
}
}
impl Defaultfor Metadata {
fn default() -> Self {
- Self::new()
+ Self::new()
}
}
impl Metadata {
/// Creates an empty [`Metadata`].
pub fn new() -> Self {
- Self(HashMap::new())
+ Self(HashMap::new())
}
/// Creates a new builder-pattern struct instance to construct [`Metadata`].
- pub fn builder() -> MetadataBuilder {
- MetadataBuilder { m: Metadata::new() }
+ pub fn builder() -> MetadataBuilder {
+ MetadataBuilder { m: Metadata::new() }
}
/// Returns the value corresponding to the key and convert it to `V`.
- pub fn get<'v, V>(&'v self, key: &str) -> Option<zvariant::Result<&'v V>>
+ pub fn get<'v, V>(&'v self, key: &str) -> Option<Result<&'v V>>
where
&'v V: TryFrom<&'v Value<'v>>,
+ <&'v V as TryFrom<&'v Value<'v>>>::Error: Into<Error>,
{
- self.get_value(key)
- .map(|v| v.downcast_ref().ok_or(zvariant::Error::IncorrectType))
+ self.get_value(key).map(|v| v.downcast_ref())
}
/// Returns a reference to the value corresponding to the key.
pub fn get_value(&self, key: &str) -> Option<&Value<'_>> {
- self.0.get(key)
+ self.0.get(key)
}
/// Sets the value for the given key and returns the previous value, if any.
@@ -638,7 +773,7 @@
Files
key: &str,
value: Option<impl Into<Value<'static>>>,
) -> Option<Value<'static>> {
- self.set_value(key, value.map(|value| value.into()))
+ self.set_value(key, value.map(|value| value.into()))
}
/// Sets the value for the given key and returns the previous value, if any.
@@ -650,10 +785,10 @@
/// D-Bus object at that path; this specification says nothing about
/// what interfaces such an object may implement.
pub fn trackid(&self) -> Option<TrackId> {
- self.get_value("mpris:trackid")?.clone().downcast()
+ self.get_value("mpris:trackid")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets a unique identity for this track within the context of an
@@ -676,17 +814,20 @@
Files
/// D-Bus object at that path; this specification says nothing about
/// what interfaces such an object may implement.
pub fn set_trackid(&mut self, trackid: Option<impl Into<TrackId>>) {
- self.set("mpris:trackid", trackid.map(|trackid| trackid.into()));
+ self.set("mpris:trackid", trackid.map(|trackid| trackid.into()));
}
/// The duration of the track.
pub fn length(&self) -> Option<Time> {
- self.get_value("mpris:length")?.clone().downcast()
+ self.get_value("mpris:length")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets the duration of the track.
pub fn set_length(&mut self, length: Option<Time>) {
- self.set("mpris:length", length);
+ self.set("mpris:length", length);
}
/// The location of an image representing the track or album.
@@ -694,7 +835,10 @@
Files
/// Clients should not assume this will continue to exist when
/// the media player stops giving out the URL.
pub fn art_url(&self) -> Option<Uri> {
- self.get_value("mpris:artUrl")?.clone().downcast()
+ self.get_value("mpris:artUrl")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets the location of an image representing the track or album.
@@ -702,22 +846,25 @@
Files
/// Clients should not assume this will continue to exist when
/// the media player stops giving out the URL.
pub fn set_art_url(&mut self, art_url: Option<impl Into<Uri>>) {
- self.set("mpris:artUrl", art_url.map(|art_url| art_url.into()));
+ self.set("mpris:artUrl", art_url.map(|art_url| art_url.into()));
}
/// The album name.
pub fn album(&self) -> Option<&str> {
- self.get_value("xesam:album")?.downcast_ref()
+ self.get_value("xesam:album")?.downcast_ref().ok()
}
/// Sets the album name.
pub fn set_album(&mut self, album: Option<impl Into<String>>) {
- self.set("xesam:album", album.map(|album| album.into()));
+ self.set("xesam:album", album.map(|album| album.into()));
}
/// The album artist(s).
pub fn album_artist(&self) -> Option<Vec<String>> {
- self.get_value("xesam:albumArtist")?.clone().downcast()
+ self.get_value("xesam:albumArtist")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets the album artist(s).
@@ -725,215 +872,242 @@
Files
&mut self,
album_artist: Option<impl IntoIterator<Item = impl Into<String>>>,
) {
- self.set(
+ self.set(
"xesam:albumArtist",
- album_artist.map(|album_artist| {
- album_artist
- .into_iter()
- .map(|i| i.into())
- .collect::<Vec<_>>()
+ album_artist.map(|album_artist| {
+ album_artist
+ .into_iter()
+ .map(|i| i.into())
+ .collect::<Vec<_>>()
}),
);
}
/// The track artist(s).
pub fn artist(&self) -> Option<Vec<String>> {
- self.get_value("xesam:artist")?.clone().downcast()
+ self.get_value("xesam:artist")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets the track artist(s).
pub fn set_artist(&mut self, artist: Option<impl IntoIterator<Item = impl Into<String>>>) {
- self.set(
+ self.set(
"xesam:artist",
- artist.map(|artist| artist.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
+ artist.map(|artist| artist.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
);
}
/// The track lyrics.
pub fn lyrics(&self) -> Option<&str> {
- self.get_value("xesam:asText")?.downcast_ref()
+ self.get_value("xesam:asText")?.downcast_ref().ok()
}
/// Sets the track lyrics.
pub fn set_lyrics(&mut self, lyrics: Option<impl Into<String>>) {
- self.set("xesam:asText", lyrics.map(|lyrics| lyrics.into()));
+ self.set("xesam:asText", lyrics.map(|lyrics| lyrics.into()));
}
/// The speed of the music, in beats per minute.
pub fn audio_bpm(&self) -> Option<i32> {
- self.get_value("xesam:audioBPM")?.downcast_ref().copied()
+ self.get_value("xesam:audioBPM")?.downcast_ref().ok()
}
/// Sets the speed of the music, in beats per minute.
pub fn set_audio_bpm(&mut self, audio_bpm: Option<i32>) {
- self.set("xesam:audioBPM", audio_bpm);
+ self.set("xesam:audioBPM", audio_bpm);
}
/// An automatically-generated rating, based on things such
/// as how often it has been played. This should be in the
/// range 0.0 to 1.0.
pub fn auto_rating(&self) -> Option<f64> {
- self.get_value("xesam:autoRating")?.downcast_ref().copied()
+ self.get_value("xesam:autoRating")?.downcast_ref().ok()
}
/// Sets an automatically-generated rating, based on things such
/// as how often it has been played. This should be in the
/// range 0.0 to 1.0.
pub fn set_auto_rating(&mut self, auto_rating: Option<f64>) {
- self.set("xesam:autoRating", auto_rating);
+ self.set("xesam:autoRating", auto_rating);
}
/// A (list of) freeform comment(s).
pub fn comment(&self) -> Option<Vec<String>> {
- self.get_value("xesam:comment")?.clone().downcast()
+ self.get_value("xesam:comment")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets a (list of) freeform comment(s).
pub fn set_comment(&mut self, comment: Option<impl IntoIterator<Item = impl Into<String>>>) {
- self.set(
+ self.set(
"xesam:comment",
- comment.map(|comment| comment.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
+ comment.map(|comment| comment.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
);
}
/// The composer(s) of the track.
pub fn composer(&self) -> Option<Vec<String>> {
- self.get_value("xesam:composer")?.clone().downcast()
+ self.get_value("xesam:composer")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets the composer(s) of the track.
pub fn set_composer(&mut self, composer: Option<impl IntoIterator<Item = impl Into<String>>>) {
- self.set(
+ self.set(
"xesam:composer",
- composer.map(|composer| composer.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
+ composer.map(|composer| composer.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
);
}
/// When the track was created. Usually only the year component
/// will be useful.
pub fn content_created(&self) -> Option<DateTime> {
- self.get_value("xesam:contentCreated")?.clone().downcast()
+ self.get_value("xesam:contentCreated")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets when the track was created. Usually only the year component
/// will be useful.
pub fn set_content_created(&mut self, content_created: Option<impl Into<DateTime>>) {
- self.set(
+ self.set(
"xesam:contentCreated",
- content_created.map(|content_created| content_created.into()),
+ content_created.map(|content_created| content_created.into()),
);
}
/// The disc number on the album that this track is from.
pub fn disc_number(&self) -> Option<i32> {
- self.get_value("xesam:discNumber")?.downcast_ref().copied()
+ self.get_value("xesam:discNumber")?.downcast_ref().ok()
}
/// Sets the disc number on the album that this track is from.
pub fn set_disc_number(&mut self, disc_number: Option<i32>) {
- self.set("xesam:discNumber", disc_number);
+ self.set("xesam:discNumber", disc_number);
}
/// When the track was first played.
pub fn first_used(&self) -> Option<DateTime> {
- self.get_value("xesam:firstUsed")?.clone().downcast()
+ self.get_value("xesam:firstUsed")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets when the track was first played.
pub fn set_first_used(&mut self, first_used: Option<impl Into<DateTime>>) {
- self.set(
+ self.set(
"xesam:firstUsed",
- first_used.map(|first_used| first_used.into()),
+ first_used.map(|first_used| first_used.into()),
);
}
/// The genre(s) of the track.
pub fn genre(&self) -> Option<Vec<String>> {
- self.get_value("xesam:genre")?.clone().downcast()
+ self.get_value("xesam:genre")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets the genre(s) of the track.
pub fn set_genre(&mut self, genre: Option<impl IntoIterator<Item = impl Into<String>>>) {
- self.set(
+ self.set(
"xesam:genre",
- genre.map(|genre| genre.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
+ genre.map(|genre| genre.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
);
}
/// When the track was last played.
pub fn last_used(&self) -> Option<DateTime> {
- self.get_value("xesam:lastUsed")?.clone().downcast()
+ self.get_value("xesam:lastUsed")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets when the track was last played.
pub fn set_last_used(&mut self, last_used: Option<impl Into<DateTime>>) {
- self.set(
+ self.set(
"xesam:lastUsed",
- last_used.map(|last_used| last_used.into()),
+ last_used.map(|last_used| last_used.into()),
);
}
/// The lyricist(s) of the track.
pub fn lyricist(&self) -> Option<Vec<String>> {
- self.get_value("xesam:lyricist")?.clone().downcast()
+ self.get_value("xesam:lyricist")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets the lyricist(s) of the track.
pub fn set_lyricist(&mut self, lyricist: Option<impl IntoIterator<Item = impl Into<String>>>) {
- self.set(
+ self.set(
"xesam:lyricist",
- lyricist.map(|lyricist| lyricist.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
+ lyricist.map(|lyricist| lyricist.into_iter().map(|i| i.into()).collect::<Vec<_>>()),
);
}
/// The track title.
pub fn title(&self) -> Option<&str> {
- self.get_value("xesam:title")?.downcast_ref()
+ self.get_value("xesam:title")?.downcast_ref().ok()
}
/// Sets the track title.
pub fn set_title(&mut self, title: Option<impl Into<String>>) {
- self.set("xesam:title", title.map(|title| title.into()));
+ self.set("xesam:title", title.map(|title| title.into()));
}
/// The track number on the album disc.
pub fn track_number(&self) -> Option<i32> {
- self.get_value("xesam:trackNumber")?.downcast_ref().copied()
+ self.get_value("xesam:trackNumber")?.downcast_ref().ok()
}
/// Sets the track number on the album disc.
pub fn set_track_number(&mut self, track_number: Option<i32>) {
- self.set("xesam:trackNumber", track_number);
+ self.set("xesam:trackNumber", track_number);
}
/// The location of the media file.
pub fn url(&self) -> Option<Uri> {
- self.get_value("xesam:url")?.clone().downcast()
+ self.get_value("xesam:url")?
+ .try_clone()
+ .ok()
+ .and_then(|v| v.downcast().ok())
}
/// Sets the location of the media file.
pub fn set_url(&mut self, url: Option<impl Into<Uri>>) {
- self.set("xesam:url", url.map(|url| url.into()));
+ self.set("xesam:url", url.map(|url| url.into()));
}
/// The number of times the track has been played.
pub fn use_count(&self) -> Option<i32> {
- self.get_value("xesam:useCount")?.downcast_ref().copied()
+ self.get_value("xesam:useCount")?.downcast_ref().ok()
}
/// Sets the number of times the track has been played.
pub fn set_use_count(&mut self, use_count: Option<i32>) {
- self.set("xesam:useCount", use_count);
+ self.set("xesam:useCount", use_count);
}
/// A user-specified rating. This should be in the range 0.0 to 1.0.
pub fn user_rating(&self) -> Option<f64> {
- self.get_value("xesam:userRating")?.downcast_ref().copied()
+ self.get_value("xesam:userRating")?.downcast_ref().ok()
}
/// Sets a user-specified rating. This should be in the range 0.0 to 1.0.
pub fn set_user_rating(&mut self, user_rating: Option<f64>) {
- self.set("xesam:userRating", user_rating);
+ self.set("xesam:userRating", user_rating);
}
}
@@ -944,11 +1118,11 @@
Files
m: Metadata,
}
-impl MetadataBuilder {
+impl MetadataBuilder {
/// Sets a value for the given key.
pub fn other(mut self, key: &str, value: impl Into<Value<'static>>) -> Self {
- self.m.set(key, Some(value));
- self
+ self.m.set(key, Some(value));
+ self}
/// Sets a unique identity for this track within the context of an
@@ -959,14 +1133,14 @@
Files
/// D-Bus object at that path; this specification says nothing about
/// what interfaces such an object may implement.
pub fn trackid(mut self, trackid: impl Into<TrackId>) -> Self {
- self.m.set_trackid(Some(trackid));
- self
+ self.m.set_trackid(Some(trackid));
+ self}
/// Sets the duration of the track.
pub fn length(mut self, length: Time) -> Self {
- self.m.set_length(Some(length));
- self
+ self.m.set_length(Some(length));
+ self}
/// Sets the location of an image representing the track or album.
@@ -974,14 +1148,14 @@
Files
/// Clients should not assume this will continue to exist when
/// the media player stops giving out the URL.
pub fn art_url(mut self, art_url: impl Into<Uri>) -> Self {
- self.m.set_art_url(Some(art_url));
- self
+ self.m.set_art_url(Some(art_url));
+ self}
/// Sets the album name.
pub fn album(mut self, album: impl Into<String>) -> Self {
- self.m.set_album(Some(album));
- self
+ self.m.set_album(Some(album));
+ self}
/// Sets the album artist(s).
@@ -989,125 +1163,197 @@
Files
mut self,
album_artist: impl IntoIterator<Item = impl Into<String>>,
) -> Self {
- self.m.set_album_artist(Some(album_artist));
- self
+ self.m.set_album_artist(Some(album_artist));
+ self}
/// Sets the track artist(s).
pub fn artist(mut self, artist: impl IntoIterator<Item = impl Into<String>>) -> Self {
- self.m.set_artist(Some(artist));
- self
+ self.m.set_artist(Some(artist));
+ self}
/// Sets the track lyrics.
pub fn lyrics(mut self, lyrics: impl Into<String>) -> Self {
- self.m.set_lyrics(Some(lyrics));
- self
+ self.m.set_lyrics(Some(lyrics));
+ self}
/// Sets the speed of the music, in beats per minute.
pub fn audio_bpm(mut self, audio_bpm: i32) -> Self {
- self.m.set_audio_bpm(Some(audio_bpm));
- self
+ self.m.set_audio_bpm(Some(audio_bpm));
+ self}
/// Sets an automatically-generated rating, based on things such
/// as how often it has been played. This should be in the
/// range 0.0 to 1.0.
pub fn auto_rating(mut self, auto_rating: f64) -> Self {
- self.m.set_auto_rating(Some(auto_rating));
- self
+ self.m.set_auto_rating(Some(auto_rating));
+ self}
/// Sets a (list of) freeform comment(s).
pub fn comment(mut self, comment: impl IntoIterator<Item = impl Into<String>>) -> Self {
- self.m.set_comment(Some(comment));
- self
+ self.m.set_comment(Some(comment));
+ self}
/// Sets the composer(s) of the track.
pub fn composer(mut self, composer: impl IntoIterator<Item = impl Into<String>>) -> Self {
- self.m.set_composer(Some(composer));
- self
+ self.m.set_composer(Some(composer));
+ self}
/// Sets when the track was created. Usually only the year component
/// will be useful.
pub fn content_created(mut self, content_created: impl Into<DateTime>) -> Self {
- self.m.set_content_created(Some(content_created));
- self
+ self.m.set_content_created(Some(content_created));
+ self}
/// Sets the disc number on the album that this track is from.
pub fn disc_number(mut self, disc_number: i32) -> Self {
- self.m.set_disc_number(Some(disc_number));
- self
+ self.m.set_disc_number(Some(disc_number));
+ self}
/// Sets when the track was first played.
pub fn first_used(mut self, first_used: impl Into<DateTime>) -> Self {
- self.m.set_first_used(Some(first_used));
- self
+ self.m.set_first_used(Some(first_used));
+ self}
/// Sets the genre(s) of the track.
pub fn genre(mut self, genre: impl IntoIterator<Item = impl Into<String>>) -> Self {
- self.m.set_genre(Some(genre));
- self
+ self.m.set_genre(Some(genre));
+ self}
/// Sets when the track was last played.
pub fn last_used(mut self, last_used: impl Into<DateTime>) -> Self {
- self.m.set_last_used(Some(last_used));
- self
+ self.m.set_last_used(Some(last_used));
+ self}
/// Sets the lyricist(s) of the track.
pub fn lyricist(mut self, lyricist: impl IntoIterator<Item = impl Into<String>>) -> Self {
- self.m.set_lyricist(Some(lyricist));
- self
+ self.m.set_lyricist(Some(lyricist));
+ self}
/// Sets the track title.
pub fn title(mut self, title: impl Into<String>) -> Self {
- self.m.set_title(Some(title));
- self
+ self.m.set_title(Some(title));
+ self}
/// Sets the track number on the album disc.
pub fn track_number(mut self, track_number: i32) -> Self {
- self.m.set_track_number(Some(track_number));
- self
+ self.m.set_track_number(Some(track_number));
+ self}
/// Sets the location of the media file.
pub fn url(mut self, url: impl Into<Uri>) -> Self {
- self.m.set_url(Some(url));
- self
+ self.m.set_url(Some(url));
+ self}
/// Sets the number of times the track has been played.
pub fn use_count(mut self, use_count: i32) -> Self {
- self.m.set_use_count(Some(use_count));
- self
+ self.m.set_use_count(Some(use_count));
+ self}
/// Sets a user-specified rating. This should be in the range 0.0 to 1.0.
pub fn user_rating(mut self, user_rating: f64) -> Self {
- self.m.set_user_rating(Some(user_rating));
- self
+ self.m.set_user_rating(Some(user_rating));
+ self}
/// Creates [`Metadata`] from the builder.
#[must_use = "building metadata is usually expensive and is not expected to have side effects"]
pub fn build(self) -> Metadata {
- self.m
+ self.m
}
}
impl<'a> From<Metadata> for Value<'a> {
fn from(metainfo: Metadata) -> Self {
- Value::new(metainfo.0)
+ Value::new(metainfo.0)
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use zbus::zvariant::Str;
+
+ use super::*;
+
+ #[test]
+ fn clone() {
+ let original = Metadata::builder().trackid(TrackId::NO_TRACK).build();
+ assert_eq!(original, original.clone());
+ }
+
+ #[test]
+ fn builder_and_getter() {
+ let m = Metadata::builder()
+ .other("other", "value")
+ .trackid(TrackId::try_from("/io/github/seadve/Player/Track123").unwrap())
+ .length(Time::from_millis(2))
+ .art_url("file:///tmp/cover.jpg")
+ .album("The Album")
+ .album_artist(vec!["The Album Artist".to_string()])
+ .artist(vec!["The Artist".to_string()])
+ .lyrics("The lyrics")
+ .audio_bpm(120)
+ .auto_rating(0.5)
+ .comment(vec!["The comment".to_string()])
+ .composer(vec!["The Composer".to_string()])
+ .content_created("2021-01-01T00:00:00".to_string())
+ .disc_number(3)
+ .first_used("2021-01-01T00:00:00".to_string())
+ .genre(vec!["The Genre".to_string()])
+ .last_used("2021-01-01T00:00:00".to_string())
+ .lyricist(vec!["The Lyricist".to_string()])
+ .title("The Title")
+ .track_number(2)
+ .url("file:///tmp/track.mp3")
+ .use_count(1)
+ .user_rating(0.5)
+ .build();
+
+ assert_eq!(
+ m.get::<Str<'_>>("other"),
+ Some(Ok(&Str::from_static("value")))
+ );
+ assert_eq!(
+ m.trackid(),
+ Some(TrackId::try_from("/io/github/seadve/Player/Track123").unwrap())
+ );
+ assert_eq!(m.length(), Some(Time::from_millis(2)));
+ assert_eq!(m.art_url(), Some("file:///tmp/cover.jpg".into()));
+ assert_eq!(m.album(), Some("The Album"));
+ assert_eq!(m.album_artist(), Some(vec!["The Album Artist".to_string()]));
+ assert_eq!(m.artist(), Some(vec!["The Artist".to_string()]));
+ assert_eq!(m.lyrics(), Some("The lyrics"));
+ assert_eq!(m.audio_bpm(), Some(120));
+ assert_eq!(m.auto_rating(), Some(0.5));
+ assert_eq!(m.comment(), Some(vec!["The comment".to_string()]));
+ assert_eq!(m.composer(), Some(vec!["The Composer".to_string()]));
+ assert_eq!(m.content_created(), Some("2021-01-01T00:00:00".to_string()));
+ assert_eq!(m.disc_number(), Some(3));
+ assert_eq!(m.first_used(), Some("2021-01-01T00:00:00".to_string()));
+ assert_eq!(m.genre(), Some(vec!["The Genre".to_string()]));
+ assert_eq!(m.last_used(), Some("2021-01-01T00:00:00".to_string()));
+ assert_eq!(m.lyricist(), Some(vec!["The Lyricist".to_string()]));
+ assert_eq!(m.title(), Some("The Title"));
+ assert_eq!(m.track_number(), Some(2));
+ assert_eq!(m.url(), Some("file:///tmp/track.mp3".into()));
+ assert_eq!(m.use_count(), Some(1));
+ assert_eq!(m.user_rating(), Some(0.5));
}
}
\ No newline at end of file
diff --git a/src/mpris_server/playback_status.rs.html b/src/mpris_server/playback_status.rs.html
index 40a2f18..8f02ff2 100644
--- a/src/mpris_server/playback_status.rs.html
+++ b/src/mpris_server/playback_status.rs.html
@@ -1,4 +1,4 @@
-playback_status.rs - source
Player {
server: self.server
- .borrow()
- .as_ref()
- .expect("server must be set up")
- .upgrade()
- .expect("server must not be dropped"),
+ .borrow()
+ .as_ref()
+ .expect("server must be set up")
+ .upgrade()
+ .expect("server must not be dropped"),
}
}
}
@@ -1162,11 +1162,11 @@
/// This can only be set on construct.
pub fn can_control(&self) -> bool {
- self.server.imp().can_control.get()
+ self.server.imp().can_control.get()
}
}
@@ -1948,12 +1948,12 @@