private void addNewFeedButtonClick(object sender, RoutedEventArgs e)
        {
            addNewFeedButton.IsEnabled = newFeedUrlTextBox.IsEnabled = false;
            var address = newFeedUrlTextBox.Text;

            if (Settings.RssFeeds.Any(f => f.Address == address))
            {
                MessageBox.Show("The specified feed has already been added.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                addNewFeedButton.IsEnabled = newFeedUrlTextBox.IsEnabled = true;
                return;
            }
            Task.Factory.StartNew(() =>
            {
                // Validate feed
                var client = new WebClient();
                try
                {
                    var feed     = client.DownloadString(address);
                    var document = XDocument.Parse(feed);
                    if (!RssFeed.ValidateFeed(document))
                    {
                        throw new Exception();
                    }
                    var rss = new RssFeed(address);
                    Dispatcher.BeginInvoke(new Action(() =>
                    {
                        Settings.RssFeeds = Settings.RssFeeds.Concat(new[] { rss }).ToArray();
                        Settings.OnPropertyChanged("RssFeeds");
                        addNewFeedButton.IsEnabled = newFeedUrlTextBox.IsEnabled = true;
                        newFeedUrlTextBox.Text     = string.Empty;
                        feedListView.SelectedItem  = rss;
                    }));
                }
                catch
                {
                    MessageBox.Show("The specified feed is not valid.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    Dispatcher.BeginInvoke(new Action(() => addNewFeedButton.IsEnabled = newFeedUrlTextBox.IsEnabled = true));
                }
            });
        }