public static void LoadSoundEvents()
 {
     if (Constants.XSettings != null)
     {
         foreach (var xElement in Constants.XSettings.Descendants()
                                           .Elements("Event"))
         {
             var xRegEx = (string) xElement.Attribute("Key");
             var xValue = (string) xElement.Element("Value");
             var xSound = (string) xElement.Element("Sound");
             var xDelay = (string) xElement.Element("Delay");
             var xCategory = (string)xElement.Element("Category");
             if (String.IsNullOrWhiteSpace(xRegEx))
             {
                 continue;
             }
             xSound = String.IsNullOrWhiteSpace(xSound) ? "aruba.wav" : String.IsNullOrWhiteSpace(xValue) ? xSound : xValue;
             xCategory = String.IsNullOrWhiteSpace(xCategory) ? "Miscellaneous" : xCategory;
             var soundEvent = new SoundEvent
             {
                 Sound = xSound,
                 Delay = 0,
                 RegEx = xRegEx,
                 Category = xCategory
             };
             int result;
             if (Int32.TryParse(xDelay, out result))
             {
                 soundEvent.Delay = result;
             }
             var found = PluginViewModel.Instance.Events.Any(se => se.RegEx == soundEvent.RegEx);
             if (!found)
             {
                 PluginViewModel.Instance.Events.Add(soundEvent);
             }
         }
     }
 }
 /// <summary>
 /// </summary>
 private static void AddEvent()
 {
     var selectedKey = "";
     try
     {
         if (MainView.View.Events.SelectedItems.Count == 1)
         {
             selectedKey = GetValueBySelectedItem(MainView.View.Events, "RegEx");
         }
     }
     catch (Exception ex)
     {
         Logging.Log(LogManager.GetCurrentClassLogger(), "", ex);
     }
     if (MainView.View.TSound.Text.Trim() == "" || MainView.View.TDelay.Text.Trim() == "" || MainView.View.TRegEx.Text.Trim() == "")
     {
         return;
     }
     if (MainView.View.TCategory.Text.Trim() == "")
     {
         MainView.View.TCategory.Text = PluginViewModel.Instance.Locale["event_MiscellaneousLabel"];
     }
     if (Regex.IsMatch(MainView.View.TDelay.Text, @"[^0-9]+"))
     {
         var popupContent = new PopupContent();
         popupContent.PluginName = Plugin.PName;
         popupContent.Title = PluginViewModel.Instance.Locale["app_WarningMessage"];
         popupContent.Message = "Delay can only be numeric.";
         Plugin.PHost.PopupMessage(Plugin.PName, popupContent);
         return;
     }
     var soundEvent = new SoundEvent
     {
         Sound = MainView.View.TSound.Text,
         Delay = 0,
         RegEx = MainView.View.TRegEx.Text,
         Category = MainView.View.TCategory.Text,
         Enabled = true
     };
     int result;
     if (Int32.TryParse(MainView.View.TDelay.Text, out result))
     {
         soundEvent.Delay = result;
     }
     if (String.IsNullOrWhiteSpace(selectedKey))
     {
         var found = PluginViewModel.Instance.Events.Any(se => se.RegEx == soundEvent.RegEx);
         if (!found)
         {
             PluginViewModel.Instance.Events.Add(soundEvent);
         }
     }
     else
     {
         var index = PluginViewModel.Instance.Events.TakeWhile(se => se.RegEx != selectedKey)
                                    .Count();
         PluginViewModel.Instance.Events[index] = soundEvent;
     }
     MainView.View.Events.UnselectAll();
     MainView.View.TRegEx.Text = "";
 }