Пример #1
0
        ///<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);
        }
Пример #2
0
        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;
                }
            }
        }
Пример #3
0
 public void Update(MpdResponseCollection responseData)
 {
     if (responseData == null)
     {
         return;
     }
     Clear();
     if (responseData.Count > 0)
     {
         Parse(responseData);
     }
     NotifyCollectionChanged();
 }
Пример #4
0
 /// <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);
 }
Пример #5
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);
        }
Пример #6
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);
        }
Пример #7
0
        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";
            }
        }
Пример #8
0
 public void Update(MpdResponseCollection currentSongInfo)
 {
     Parse(currentSongInfo);
 }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }