public Status(List<KeyValuePair<string, string>> keyValuePairList)
{
if (keyValuePairList == null) return;
bool succonvert = false;
int convi = 0;
bool convb = false;
double convd = 0;
foreach (var kv in keyValuePairList)
{
switch (kv.Key)
{
case "volume":
succonvert = int.TryParse(kv.Value, out convi);
this.Volume = (succonvert) ? convi : -1;
break;
case "repeat":
succonvert = int.TryParse(kv.Value, out convi);
this.Repeat = (succonvert && convi > 0) ? true : false;
break;
case "random":
succonvert = int.TryParse(kv.Value, out convi);
this.Random = (succonvert && convi > 0) ? true : false;
break;
case "single":
succonvert = int.TryParse(kv.Value, out convi);
this.Single = (succonvert && convi > 0) ? true : false;
break;
case "consume":
succonvert = int.TryParse(kv.Value, out convi);
this.Consume = (succonvert && convi > 0) ? true : false;
break;
case "playlist":
succonvert = int.TryParse(kv.Value, out convi);
this.Playlist = (succonvert) ? convi : 0;
break;
case "playlistlength":
succonvert = int.TryParse(kv.Value, out convi);
this.PlaylistLength = (succonvert) ? convi : 0;
break;
case "state":
this.State = kv.Value;
break;
case "song":
succonvert = int.TryParse(kv.Value, out convi);
this.Song = (succonvert) ? convi : 0;
break;
case "songid":
succonvert = int.TryParse(kv.Value, out convi);
this.SongId = (succonvert) ? convi : 0;
break;
case "nextsong":
succonvert = int.TryParse(kv.Value, out convi);
this.NextSong = (succonvert) ? convi : 0;
break;
case "nextsongid":
succonvert = int.TryParse(kv.Value, out convi);
this.NextSongId = (succonvert) ? convi : 0;
break;
case "time":
succonvert = double.TryParse(kv.Value.Replace(":", "."), out convd);
this.Time = (succonvert) ? convd : 0;
break;
case "elapsed":
succonvert = double.TryParse(kv.Value, out convd);
this.Elapsed = (succonvert) ? convd : 0;
break;
case "bitrate":
succonvert = int.TryParse(kv.Value, out convi);
this.Bitrate = (succonvert) ? convi : 0;
break;
case "xfade":
succonvert = int.TryParse(kv.Value, out convi);
this.XFade = (succonvert) ? convi : 0;
break;
case "mixrampdb":
this.MixRampDb = kv.Value;
break;
case "mixrampdelay":
this.MixRampDelay = kv.Value;
break;
case "audio":
this.Audio = kv.Value;
break;
case "updating_db":
this.UpdatingDb = kv.Value;
break;
case "error":
this.Error = kv.Value;
break;
default:
break;
}
}
}