internal override void ExecuteBang(string args) { //Some bangs pass multiple parameters, only the first one is //needed to identify the correct bang string[] argsArray = args.Split(' '); switch (argsArray[0].ToLowerInvariant()) { case "play": MediaMonkey.Play(); break; case "pause": MediaMonkey.Pause(); break; case "playpause": MediaMonkey.PlayPause(); break; case "stop": MediaMonkey.Stop(); break; case "previous": MediaMonkey.Previous(); break; case "next": MediaMonkey.Next(); break; case "openplayer": MediaMonkey.OpenPlayer(); break; case "closeplayer": MediaMonkey.ClosePlayer(); break; case "toggleplayer": MediaMonkey.TogglePlayer(); break; case "setrating": double argsRating; if (double.TryParse(argsArray[1], out argsRating)) { int mmRating = StarsToMediaMonkeyRating(argsRating); if (mmRating == -2) { API.Log(API.LogType.Error, "MediaMonkey.dll: Invalid parameter for SetRating =" + argsArray[1]); } else { API.Log(API.LogType.Error, "MediaMonkey.dll: call SetRating =" + mmRating); MediaMonkey.SetRating(mmRating); } } else { API.Log(API.LogType.Error, "MediaMonkey.dll: Invalid parameter for SetRating =" + argsArray[1]); } break; case "setposition": int argsPosition; if (int.TryParse(argsArray[1], out argsPosition)) { MediaMonkey.SetPosition(argsPosition); } else { API.Log(API.LogType.Error, "MediaMonkey.dll: Invalid parameter for SetPosition =" + argsArray[1]); } break; case "setshuffle": int argsShuffle; if (int.TryParse(argsArray[1], out argsShuffle)) { switch (argsShuffle) { case -1: case 0: case 1: MediaMonkey.SetShuffle(argsShuffle); break; default: API.Log(API.LogType.Error, "MediaMonkey.dll: Invalid parameter for SetShuffle =" + argsArray[1]); break; } } else { API.Log(API.LogType.Error, "MediaMonkey.dll: Invalid parameter for SetShuffle =" + argsArray[1]); } break; case "setrepeat": int argsRepeat; if (int.TryParse(argsArray[1], out argsRepeat)) { switch (argsRepeat) { case -1: case 0: case 1: MediaMonkey.SetRepeat(argsRepeat); break; default: API.Log(API.LogType.Error, "MediaMonkey.dll: Invalid parameter for SetRepeat =" + argsArray[1]); break; } } else { API.Log(API.LogType.Error, "MediaMonkey.dll: Invalid parameter for SetRepeat =" + argsArray[1]); } break; case "setvolume": int argsVolume; Match VolumeRegex = Regex.Match(argsArray[1], "([+-]?)(\\d+)"); if (int.TryParse(VolumeRegex.Groups[2].Value, out argsVolume)) { if (VolumeRegex.Groups[1].Value == "") { MediaMonkey.SetVolume(argsVolume); } else if (VolumeRegex.Groups[1].Value == "+") { IncreaseVolume(argsVolume); } else if (VolumeRegex.Groups[1].Value == "-") { DecreaseVolume(argsVolume); } else { API.Log(API.LogType.Error, "MediaMonkey.dll: Invalid parameter for SetVolume =" + argsArray[1]); } } else { API.Log(API.LogType.Error, "MediaMonkey.dll: Invalid parameter for SetVolume =" + argsArray[1]); } break; } }