///<summary> /// Забирает из ответа сервера данные по одному выходу и /// распределяет их по свойствам экземпляра /// Обработанные данные удаляются из ответа ///</summary> public void Update(MpdResponseCollection response) { if (response == null) { throw new BalboaNullValueException(_modName, "Update", "40", "responce"); } int i = 0; do { string[] items = response[i].Split(':'); string tagname = items[0].ToLower(); string tagvalue = items[1].Trim(); switch (tagname) { case "outputid": Id = int.Parse(tagvalue, NumberStyles.Integer, CultureInfo.InvariantCulture); break; case "outputname": Name = tagvalue; break; case "outputenabled": Enabled = (tagvalue == "1") ? true : false; break; } i++; }while ((i < response.Count) && (!response[i].StartsWith("outputid", StringComparison.OrdinalIgnoreCase))); response.RemoveRange(0, i); }
public void Update(MpdResponseCollection statsInfo) { if (statsInfo == null) { throw new BalboaNullValueException(_modName, "Update", "158", "statsinfo"); } foreach (string item in statsInfo) { string[] statsitem = item.Split(':'); switch (statsitem[0]) { case "artists": Artists = int.Parse(statsitem[1], NumberStyles.Integer, CultureInfo.InvariantCulture); break; case "albums": Albums = int.Parse(statsitem[1], NumberStyles.Integer, CultureInfo.InvariantCulture); break; case "songs": Songs = int.Parse(statsitem[1], NumberStyles.Integer, CultureInfo.InvariantCulture); break; case "uptime": Uptime = int.Parse(statsitem[1], NumberStyles.Integer, CultureInfo.InvariantCulture); break; case "db_playtime": DbPlaytime = int.Parse(statsitem[1], NumberStyles.Integer, CultureInfo.InvariantCulture); break; case "db_update": DbUpdate = int.Parse(statsitem[1], NumberStyles.Integer, CultureInfo.InvariantCulture); // Unix timestamp is seconds past epoch DateTime db_update_dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); DbUpdateDT = db_update_dt.AddSeconds(DbUpdate).ToLocalTime(); break; case "playtime": Playtime = int.Parse(statsitem[1], NumberStyles.Integer, CultureInfo.InvariantCulture); break; } } }
public void Update(MpdResponseCollection responseData) { if (responseData == null) { return; } Clear(); if (responseData.Count > 0) { Parse(responseData); } NotifyCollectionChanged(); }
/// <summary> /// Создаёт новый экземпляр элемента коллекции, вызывает метод Parse созданного элемента и передаёт /// этому методу набор данных полученных от сервера. /// Экземпляр элемента коллекции забирает из полученного набора данных свою порцию и разносит данные /// по своим свойствам. /// Остаток данных возвращается для обработки следующим элементом /// </summary> /// <param name="responce"></param> public void Parse(MpdResponseCollection response) { if (response == null) { return; } do { T collectionitem = (T)Activator.CreateInstance(typeof(T)); collectionitem.PropertyChanged += ItemPropertyChanged; collectionitem.Update(response); Add(collectionitem); }while (response.Count > 0); }
public void Update(MpdResponseCollection response) { if (response == null) { throw new BalboaException(_fileName, this.GetType().FullName, "Update", "43", "Parameter 'response' is null"); } string[] items = response[0].Split(':'); if (items.Length > 1) { Name = items[1].Trim(); } else { Name = "Undefined"; } response.RemoveAt(0); }
public void Update(MpdResponseCollection response) { int i = 0; if (response == null) { return; } do { string[] items = response[i].Split(':'); string tagname = items[0].ToLower(); string tagvalue = items[1].Trim(); switch (tagname) { case "file": Name = Utilities.ExtractFileName(tagvalue, false); Nature = FileNature.File; Icon += '\xE189'; break; // 57737 // E189 case "directory": Name = Utilities.ExtractFileName(tagvalue, false); Nature = FileNature.Directory; Icon += '\xE188'; break; // 57736 // E188 case "playlist": Name = tagvalue; Nature = FileNature.Playlist; break; case "Last-Modified": LastModified = tagvalue; break; } i++; }while ((i < response.Count) && (!response[i].StartsWith("file", StringComparison.OrdinalIgnoreCase)) && (!response[i].StartsWith("playlist", StringComparison.OrdinalIgnoreCase)) && (!response[i].StartsWith("directory", StringComparison.OrdinalIgnoreCase))); response.RemoveRange(0, i); }
private void Parse(MpdResponseCollection currentsonginfo) { // Заполним пустые параметры значениями по умолчанию Title = string.Empty; Artist = string.Empty; Album = string.Empty; Date = string.Empty; foreach (string item in currentsonginfo) { string tagvalue = string.Empty; string[] items = item.Split(':'); if (items.Length > 1) { tagvalue = items[1].Trim(); } switch (items[0]) { case "file": File = tagvalue; break; case "Last-Modified": LastModified = tagvalue; break; case "Time": Duration = float.Parse(tagvalue, System.Globalization.CultureInfo.InvariantCulture); break; case "Artist": Artist = tagvalue; break; case "Title": Title = tagvalue; break; case "Album": Album = tagvalue; break; case "Date": Date = tagvalue; break; case "Track": Track = tagvalue; break; case "Genre": Genre = tagvalue; break; case "Composer": Composer = tagvalue; break; case "AlbumArtist": AlbumArtist = tagvalue; break; case "Disc": Disc = tagvalue; break; case "Pos": Position = tagvalue; break; case "Id": Id = int.Parse(tagvalue, System.Globalization.CultureInfo.InvariantCulture); break; } } // Заполним пустые параметры значениями по умолчанию if (Title.Length == 0) { Title = Utilities.ExtractFileName(File ?? "", true); } if (Artist.Length == 0) { Artist = " Unknown artist"; } if (Album.Length == 0) { Album = " Unknown album"; } if (Date.Length == 0) { Date = " Unknown year"; } }
public void Update(MpdResponseCollection currentSongInfo) { Parse(currentSongInfo); }
public void Update(MpdResponseCollection statusInfo) { if (statusInfo == null) { throw new BalboaNullValueException(_modName, "Update", "323", "statusInfo"); } string notNumber = @"\D{1,}"; foreach (string item in statusInfo) { string[] statusitem = item.Split(':'); string statusvalue = statusitem[1].TrimStart(' '); switch (statusitem[0]) { case "volume": Volume = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; // volume: 0-100 case "repeat": Repeat = (statusvalue == "1") ? true : false; break; // repeat: 0 or 1 case "random": Random = (statusvalue == "1") ? true : false; break; // random: 0 or 1 case "single": Single = (statusvalue == "1") ? true : false; break; // single: 0 or 1 case "consume": Consume = (statusvalue == "1") ? true : false; break; // consume: 0 or 1 case "playlist": PlaylistId = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; // playlist: 31-bit unsigned integer, the playlist version number case "playlistlength": PlaylistLength = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; // playlistlength: integer, the length of the playlist case "state": State = statusvalue; break; // state: play, stop, or pause case "song": Song = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; // song: playlist song number of the current song stopped on or playing case "songid": SongId = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; // songid: playlist songid of the current song stopped on or playing case "nextsong": NextSong = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; // nextsong: playlist song number of the next song to be played case "nextsongid": NextSongId = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; // nextsongid: playlist songid of the next song to be played case "time": Time = float.Parse(statusvalue, CultureInfo.InvariantCulture); break; // time: total time elapsed(of current playing/paused song) case "elapsed": TimeElapsed = float.Parse(statusvalue, CultureInfo.InvariantCulture); break; // elapsed: Total time elapsed within the current song, but with higher resolution. case "bitrate": Bitrate = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; // bitrate: instantaneous bitrate in kbps case "xfade": XFade = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; // xfade: crossfade in seconds case "mixrampdb": MixRampdB = float.Parse(statusvalue, CultureInfo.InvariantCulture); break; // mixrampdb: mixramp threshold in dB case "mixrampdelay": MixRampDelay = statusvalue; break; // mixrampdelay: mixrampdelay in seconds case "audio": SampleRate = Regex.IsMatch(statusvalue, notNumber) ? 0 : int.Parse(statusvalue, CultureInfo.InvariantCulture); // audio: sampleRate:bits:channels Bits = Regex.IsMatch(statusitem[2], notNumber) ? 0:int.Parse(statusitem[2], CultureInfo.InvariantCulture); Channels = Regex.IsMatch(statusitem[3], notNumber) ? 0:int.Parse(statusitem[3], CultureInfo.InvariantCulture); AudioParameters = "Sample rate: " + SampleRate.ToString(CultureInfo.InvariantCulture) + " kHz, " + Bits.ToString(CultureInfo.InvariantCulture) + " per sample, channels: " + Channels.ToString(CultureInfo.InvariantCulture); break; case "updating_db": UpdatingDbJobId = int.Parse(statusvalue, CultureInfo.InvariantCulture); break; //updating_db: job id case "error": Error = statusvalue; break; // error } } ExtendedStatus = GetExtendedStatusValue(_state); }
public void Update(MpdResponseCollection response) { // response = null; if (response == null) { throw new BalboaNullValueException(_modName, "Update", "95", "response"); } int i = 0; do { string[] items = response[i].Split(':'); string tagname = items[0].ToLower(); string tagvalue = items[1].Trim(); switch (tagname) { case "file": File = tagvalue; break; case "last-modified": LastModified = tagvalue; break; case "time": Time = float.Parse(tagvalue, NumberStyles.Float, CultureInfo.InvariantCulture); break; case "artist": Artist = tagvalue; break; case "title": Title = tagvalue; break; case "album": Album = tagvalue; break; case "date": Date = tagvalue; break; case "track": TrackNo = tagvalue; break; case "genre": Genre = tagvalue; break; case "composer": Composer = tagvalue; break; case "albumartist": AlbumArtist = tagvalue; break; case "disc": Disc = tagvalue; break; case "pos": Position = tagvalue; break; case "id": Id = int.Parse(tagvalue, NumberStyles.Integer, CultureInfo.InvariantCulture); break; // Database properties case "artistsort": ArtistSort = tagvalue; break; // same as artist, but for sorting.This usually omits prefixes such as "The". case "albumsort": AlbumSort = tagvalue; break; // same as album, but for sorting. case "albumartistsort": AlbumArtistSort = tagvalue; break; // same as albumartist, but for sorting. case "name": Name = tagvalue; break; // a name for this song.This is not the song title. The exact meaning of this tag is not well-defined.It is often used by badly configured internet radio stations with broken tags to squeeze both the artist name and the song title in one tag. case "performer": Performer = tagvalue; break; // the artist who performed the song. case "comment": Comment = tagvalue; break; // a human-readable comment about this song.The exact meaning of this tag is not well-defined. case "musicbrainz_artistid": MusicBrainzArtistId = tagvalue; break; // the artist id in the MusicBrainz database. case "musicbrainz_albumid": MusicBrainzAlbumId = tagvalue; break; // the album id in the MusicBrainz database. case "musicbrainz_albumartistid": MusicBrainzAlbumArtistId = tagvalue; break; // the album artist id in the MusicBrainz database. case "musicbrainz_trackid": MusicBrainzTrackId = tagvalue; break; // the track id in the MusicBrainz database. case "musicbrainz_releasetrackid": MusicBrainzReleaseTrackId = tagvalue; break; // the release track id in the MusicBrainz database. } // Заполним пустые параметры значениями по умолчанию if (Title == null) { Title = Utilities.ExtractFileName(File ?? "", true); } if (Artist == null) { Artist = " Unknown artist"; } if (Album == null) { Album = " Unknown album"; } if (Date == null) { Date = " Unknown year"; } i++; }while ((i < response.Count) && (!response[i].StartsWith("file", System.StringComparison.Ordinal))); response.RemoveRange(0, i); }