コード例 #1
0
ファイル: OsuDirect.cs プロジェクト: notperry1234567890/osu
        public static void HandlePickup(string checksum, EventHandler onFinish, EventHandler onFail)
        {
            if ((BanchoClient.Permission & Permissions.Supporter) > 0)
            {
                OnlineBeatmap.FromId(LinkId.Checksum, checksum, delegate(object beatmap, EventArgs f)
                {
                    OnlineBeatmap ob = beatmap as OnlineBeatmap;

                    if (ob == null)
                    {
                        if (onFail != null)
                        {
                            onFail(null, null);
                        }
                        return;
                    }


                    QueueBeatmapForResponse(ob);

                    ob.OnDownloadFinished += onFinish;
                });

                return;
            }

            if (onFail != null)
            {
                onFail(null, null);
            }
        }
コード例 #2
0
        public void DeleteSongs(List <LocalBeatmap> songs)
        {
            foreach (LocalBeatmap localBeatmap in songs)
            {
                LocalBeatmaps.Maps.Remove(localBeatmap);
                App.BeatSaverApi.DeleteSong(localBeatmap);
            }

            List <OnlineBeatmap> onlineBeatmaps = new List <OnlineBeatmap>();

            foreach (LocalBeatmap localBeatmap in songs)
            {
                OnlineBeatmap onlineBeatmap = MainWindow.ViewModel.BeatmapOnlineUserControl.ViewModel.OnlineBeatmaps?.Maps.FirstOrDefault(x => x.Key == localBeatmap.Identifier.Value || x.Hash == localBeatmap.Identifier.Value);

                if (onlineBeatmap != null)
                {
                    onlineBeatmaps.Add(onlineBeatmap);
                }
            }

            if (onlineBeatmaps.Count == songs.Count)
            {
                onlineBeatmaps.ForEach(x => x.IsDownloaded = false);
            }
            else
            {
                BeatmapChanged = true;
            }

            LocalBeatmaps = App.BeatSaverApi.RefreshLocalPages(LocalBeatmaps);
        }
コード例 #3
0
        private async void Map_Download(object sender, RoutedEventArgs e)
        {
            OnlineBeatmap beatmap = ((Button)sender).Tag as OnlineBeatmap;
            await ViewModel.DownloadSong(beatmap);

            ViewModel.UpdatePageButtons();
        }
コード例 #4
0
        private void BeatSaverApi_DownloadCompleted(object sender, DownloadCompletedEventArgs e)
        {
            if (OnlineBeatmaps is null)
            {
                return;
            }

            if (!OnlineBeatmaps.Maps.Contains(e.Beatmap))
            {
                OnlineBeatmap onlineBeatmap = OnlineBeatmaps.Maps.FirstOrDefault(x => x.Key == e.Beatmap.Key);
                if (onlineBeatmap != null)
                {
                    onlineBeatmap.IsDownloading = e.Beatmap.IsDownloading;
                    onlineBeatmap.IsDownloaded  = e.Beatmap.IsDownloaded;
                }
            }

            if (!OnlineBeatmaps.Maps.Any(x => x.IsDownloading) && !App.BeatSaverApi.Downloading.Any())
            {
                MainWindow.radioButtonSettings.IsEnabled = true;
            }

            BeatmapChanged = true;
            UpdatePageButtons();
        }
コード例 #5
0
ファイル: OsuDirect.cs プロジェクト: notperry1234567890/osu
        public static void HandlePickup(LinkId idType, int id, EventHandler onFinish, EventHandler onFail)
        {
            if ((BanchoClient.Permission & Permissions.Supporter) > 0)
            {
                OnlineBeatmap.FromId(idType, id.ToString(), delegate(object beatmap, EventArgs f)
                {
                    OnlineBeatmap ob = beatmap as OnlineBeatmap;

                    if (ob == null)
                    {
                        if (onFail == null)
                        {
                            HandlePickupFallback(idType, id);
                        }
                        else
                        {
                            onFail(null, null);
                        }
                        return;
                    }


                    QueueBeatmapForResponse(ob);

                    ob.OnDownloadFinished += onFinish;
                });

                return;
            }


            HandlePickupFallback(idType, id);
        }
コード例 #6
0
ファイル: OsuDirect.cs プロジェクト: notperry1234567890/osu
 internal static void QueueBeatmapForResponse(OnlineBeatmap ob)
 {
     if (!ResponseQueue.Contains(ob) && RespondingBeatmap != ob)
     {
         ResponseQueue.Enqueue(ob);
     }
 }
コード例 #7
0
        public void BeatmapDetails(OnlineBeatmap beatmap, bool changePage = true)
        {
            MainWindow.ViewModel.BeatmapOnlineDetailsUserControl.ViewModel.Beatmap = beatmap;
            if (changePage)
            {
                MainWindow.userControlMain.Content = MainWindow.ViewModel.BeatmapOnlineDetailsUserControl;
            }

            MainWindow.ViewModel.BeatmapOnlineUserControl.dataGridMaps.UnselectAll();
        }
コード例 #8
0
 /// <summary>
 /// The constructor for the event
 /// </summary>
 /// <param name="beatmap">The beatmap to download</param>
 /// <param name="bytesReceived">The total amount of bytes received</param>
 /// <param name="totalBytesToReceive">The total amount of bytes to receive</param>
 /// <param name="progressPercent">The download progress percent</param>
 /// <param name="timeLeft">The estimated time left until completed</param>
 /// <param name="timeSpent">The time spent downloading</param>
 /// <param name="downloaded">The current amount downloaded</param>
 /// <param name="toDownload">The current amount to download</param>
 public DownloadProgressedEventArgs(OnlineBeatmap beatmap, long bytesReceived, long totalBytesToReceive, int progressPercent, string timeLeft, string timeSpent, string downloaded, string toDownload)
 {
     Beatmap             = beatmap;
     BytesReceived       = bytesReceived;
     TotalBytesToReceive = totalBytesToReceive;
     ProgressPercent     = progressPercent;
     TimeLeft            = timeLeft;
     TimeSpent           = timeSpent;
     Downloaded          = downloaded;
     ToDownload          = toDownload;
 }
コード例 #9
0
        public void DeleteSong(OnlineBeatmap beatmap)
        {
            LocalBeatmap localBeatmap = MainWindow.ViewModel.BeatmapLocalUserControl.ViewModel.LocalBeatmaps?.Maps.FirstOrDefault(x => x.Identifier.Value == beatmap.Key || x.Identifier.Value == beatmap.Hash);

            if (localBeatmap != null)
            {
                MainWindow.ViewModel.BeatmapLocalUserControl.ViewModel.LocalBeatmaps.Maps.Remove(localBeatmap);
            }

            App.BeatSaverApi.DeleteSong(beatmap);
            BeatmapChanged = true;
        }
コード例 #10
0
        public BeatmapFailedUserControl(OnlineBeatmap beatmap, Exception exception)
        {
            InitializeComponent();
            string message = exception.Message;

            if (exception.InnerException != null && !exception.Message.Contains(exception.InnerException.Message))
            {
                message += $" ({exception.InnerException.Message})";
            }

            ViewModel   = new BeatmapFailedUserControlViewModel(beatmap, message);
            DataContext = ViewModel;
        }
コード例 #11
0
ファイル: OsuDirect.cs プロジェクト: notperry1234567890/osu
        private static void HideResponseDialog()
        {
            ResetAudioPreview();

            if (ResponseSprites != null)
            {
                ResponseSprites.ForEach(s =>
                {
                    s.FadeOut(100);
                    s.AlwaysDraw = false;
                });
            }
            RespondingBeatmap = null;
            WasPlayingAudio   = false;
        }
コード例 #12
0
        public void DeleteSong(LocalBeatmap beatmap)
        {
            OnlineBeatmap onlineBeatmap = MainWindow.ViewModel.BeatmapOnlineUserControl.ViewModel.OnlineBeatmaps?.Maps.FirstOrDefault(x => x.Key == beatmap.Identifier.Value || x.Hash == beatmap.Identifier.Value);

            App.BeatSaverApi.DeleteSong(beatmap);
            LocalBeatmaps.Maps.Remove(beatmap);
            if (onlineBeatmap is null)
            {
                BeatmapChanged = true;
            }
            else
            {
                onlineBeatmap.IsDownloaded = false;
            }

            LocalBeatmaps = App.BeatSaverApi.RefreshLocalPages(LocalBeatmaps);
        }
コード例 #13
0
        private BeatmapDownloadingUserControl GetDownloadingBeatmap(OnlineBeatmap beatmap)
        {
            BeatmapDownloadingUserControl downloadingUserControl = null;

            foreach (object obj in userControl.stackPanelDownloading.Children)
            {
                if (obj is BeatmapDownloadingUserControl control)
                {
                    if (control.ViewModel.Beatmap == beatmap)
                    {
                        downloadingUserControl = control;
                        break;
                    }
                }
            }

            return(downloadingUserControl);
        }
コード例 #14
0
 /// <summary>
 /// 使用<seealso cref="OnlineBeatmap"/>初始化Beatmap对象>
 /// </summary>
 /// <param name="olbeatmap"></param>
 public Beatmap(OnlineBeatmap olbeatmap)
 {
     Title             = olbeatmap.Title;
     TitleUnicode      = Title;
     Artist            = olbeatmap.Artist;
     ArtistUnicode     = Artist;
     Creator           = olbeatmap.Creator;
     Difficulty        = olbeatmap.Version;
     Version           = Difficulty;
     FileName          = "";
     FullPath          = "";
     DownloadLink      = "";
     Source            = olbeatmap.Source;
     Tags              = olbeatmap.Tags;
     Maker             = "";
     Md5               = new MD5String(olbeatmap.Md5);
     FullAudioFileName = "";
 }
コード例 #15
0
        private BeatmapCompletedUserControl GetCompletedBeatmap(OnlineBeatmap beatmap)
        {
            BeatmapCompletedUserControl completedUserControl = null;

            foreach (object obj in userControl.stackPanelCompleted.Children)
            {
                if (obj is BeatmapCompletedUserControl control)
                {
                    if (control.ViewModel.Beatmap == beatmap)
                    {
                        completedUserControl = control;
                        break;
                    }
                }
            }

            return(completedUserControl);
        }
コード例 #16
0
ファイル: OsuDirect.cs プロジェクト: notperry1234567890/osu
        public static OsuDirectDownload StartDownload(OnlineBeatmap ob, bool noVideo)
        {
            //check for existing downloads for this beatmap first.
            if (ActiveDownloads.Find(d => d.beatmap.setId == ob.setId) != null)
            {
                NotificationManager.ShowMessageMassive("This beatmap is already being downloaded!", 2000);
                return(null);
            }

            GameBase.Scheduler.Add(delegate
            {
                if (RespondingBeatmap == ob)
                {
                    HideResponseDialog();
                }
            });

#if P2P
            OsuMagnetFactory.WebGetOz2Hashes(ob.setid, (hash, dummy) => GameBase.Scheduler.Add(() =>
            {
                OsuDirectDownload odd;
                if (hash != null)
                {
                    odd = new P2PDirectDownload(ob, noVideo);
                }
                else
                {
                    odd = new OsuDirectDownload(ob, noVideo);
                }
                StartDownload(odd);
                callback(odd);
            }));
#else
            OsuDirectDownload odd = new OsuDirectDownload(ob, noVideo);
            StartDownload(odd);
#endif

            return(odd);
        }
コード例 #17
0
        public async Task DownloadSong(OnlineBeatmap beatmap)
        {
            try
            {
                MainWindow.radioButtonSettings.IsEnabled = false;
                await App.BeatSaverApi.DownloadSong(beatmap);
            }
            catch (InvalidOperationException e)
            {
                MainWindow.ToggleLoading(false);
                string errorMessage = e.Message;
                if (e.InnerException != null && !e.Message.Contains(e.InnerException.Message))
                {
                    errorMessage += $" ({e.InnerException.Message})";
                }

                await MainWindow.ShowMessageAsync("Downloading failed", "Downloading the song failed with the following error\n\n" +
                                                  "Error:\n" +
                                                  $"{errorMessage}");
            }
            catch (Exception e)
            {
                MainWindow.ToggleLoading(false);
                string errorMessage = e.Message;
                if (e.InnerException != null && !e.Message.Contains(e.InnerException.Message))
                {
                    errorMessage += $" ({e.InnerException.Message})";
                }

                MessageDialogResult result = await MainWindow.ShowMessageAsync("Downloading failed", "Downloading the song failed, would you like to try again?\n\n" +
                                                                               "Error:\n" +
                                                                               $"{errorMessage}", MessageDialogStyle.AffirmativeAndNegative);

                if (result == MessageDialogResult.Affirmative)
                {
                    await DownloadSong(beatmap);
                }
            }
        }
コード例 #18
0
        public void SetOnlineNoteInformation(OnlineBeatmap onlineBeatmap, IDifficulty difficulty)
        {
            float secondEquivalentOfBeat = 60 / onlineBeatmap.Metadata.BeatsPerMinute;
            float minHalfJumpDuration    = 1f;
            float jumpSpeedThreshold     = 18f;
            float halfJumpDuration       = 4f;

            while (difficulty.NoteJumpMovementSpeed * secondEquivalentOfBeat * halfJumpDuration > jumpSpeedThreshold)
            {
                halfJumpDuration /= 2f;
            }

            halfJumpDuration += difficulty.NoteJumpStartBeatOffset;

            if (halfJumpDuration < minHalfJumpDuration)
            {
                halfJumpDuration = minHalfJumpDuration;
            }

            difficulty.HalfJumpDuration = halfJumpDuration;
            difficulty.JumpDistance     = difficulty.NoteJumpMovementSpeed * (secondEquivalentOfBeat * (halfJumpDuration * 2));
        }
コード例 #19
0
 public BeatmapCompletedUserControl(OnlineBeatmap beatmap, string downloaded)
 {
     InitializeComponent();
     ViewModel   = new BeatmapCompletedUserControlViewModel(beatmap, downloaded);
     DataContext = ViewModel;
 }
コード例 #20
0
 public OsuDirectDownload(OnlineBeatmap ob, bool noVideo)
     : this(ob.setId, ob.filename, ob.title, noVideo, noVideo ? ob.filesize_novideo : ob.filesize)
 {
     beatmap = ob;
 }
コード例 #21
0
 public BeatmapFailedUserControlViewModel(OnlineBeatmap beatmap, string message)
 {
     Beatmap = beatmap;
     Message = message;
 }
コード例 #22
0
 public BeatmapDownloadingUserControl(OnlineBeatmap beatmap)
 {
     InitializeComponent();
     ViewModel   = new BeatmapDownloadingUserControlViewModel(beatmap);
     DataContext = ViewModel;
 }
コード例 #23
0
 public BeatmapDownloadingUserControlViewModel(OnlineBeatmap beatmap)
 {
     Beatmap = beatmap;
 }
コード例 #24
0
        private void Map_Details(object sender, RoutedEventArgs e)
        {
            OnlineBeatmap beatmap = ((Button)sender).Tag as OnlineBeatmap;

            ViewModel.BeatmapDetails(beatmap);
        }
コード例 #25
0
 public BeatmapCompletedUserControlViewModel(OnlineBeatmap beatmap, string downloaded)
 {
     Beatmap    = beatmap;
     Downloaded = downloaded;
 }
コード例 #26
0
        private void Map_Delete(object sender, RoutedEventArgs e)
        {
            OnlineBeatmap beatmap = ((Button)sender).Tag as OnlineBeatmap;

            ViewModel.DeleteSong(beatmap);
        }
コード例 #27
0
ファイル: OsuDirect.cs プロジェクト: notperry1234567890/osu
        private void ShowResponseDialog(OnlineBeatmap beatmap)
        {
            if (RespondingBeatmap != null)
            {
                HideResponseDialog();
            }

            if ((GameBase.TournamentManager || (ConfigManager.sAutomaticDownload && (MatchSetup.Match != null || StreamingManager.CurrentlySpectating != null))) &&
                !beatmap.exists && !beatmap.HasAttachedDownload)
            {
                beatmap.Download(ConfigManager.sAutomaticDownloadNoVideo);
                return;
            }

            if (GameBase.Tournament)
            {
                return;
            }

            background.FlashColour(Color.Gray, 500);

            if (ResponseSprites != null)
            {
                ResponseSprites.ForEach(s =>
                {
                    s.FadeOut(100);
                    s.AlwaysDraw = false;
                });
            }

            if (thumbRequest != null)
            {
                thumbRequest.Abort();
            }
            if (previewRequest != null)
            {
                previewRequest.Abort();
            }

            RespondingBeatmap = beatmap;
            ResponseSprites   = new List <pSprite>();

            float y = 24;

            pText pt = new pText(beatmap.artist, 12, new Vector2(background.Position.X, YPOS + y), 1, true, Color.Orchid);

            pt.Field    = Fields.TopRight;
            pt.TextBold = true;
            ResponseSprites.Add(pt);

            y += 12;

            pt       = new pText(beatmap.title, 12, new Vector2(background.Position.X, YPOS + y), 1, true, Color.White);
            pt.Field = Fields.TopRight;

            pt.TextBold = true;
            ResponseSprites.Add(pt);

            y += 12;

            pt       = new pText("by " + beatmap.creator, 12, new Vector2(background.Position.X, YPOS + y), 1, true, Color.White);
            pt.Field = Fields.TopRight;
            ResponseSprites.Add(pt);

            y += 14;

            previewThumbnail = new pSprite(null, Fields.TopRight, Origins.Centre, Clocks.Game, new Vector2(background.Position.X - (WIDTH / 2), YPOS + y + (WIDTH * 0.8f / 2)), 1, true, Color.TransparentWhite);
            previewThumbnail.IsDisposable = true;
            previewThumbnail.Scale        = 0.7f;
            y += 100;

            thumbRequest           = new pWebRequest(General.STATIC_WEB_ROOT_BEATMAP + @"/thumb/" + beatmap.setId + @"l.jpg");
            thumbRequest.Finished += delegate(pWebRequest r, Exception e)
            {
                byte[] data = r.ResponseData;

                if (e != null || data.Length == 0)
                {
                    return;
                }

                GameBase.Scheduler.Add(delegate
                {
                    previewThumbnail.Texture = pTexture.FromBytes(data);
                    SkinManager.RegisterUnrecoverableTexture(previewThumbnail.Texture);

                    fadeInThumbnail();
                });
            };

            thumbRequest.Perform();

            if (!disallowAudioPreview)
            {
                previewRequest           = new pWebRequest(string.Format(@"{0}/preview/{1}.mp3", General.STATIC_WEB_ROOT_BEATMAP, beatmap.setId));
                previewRequest.Finished += delegate(pWebRequest r, Exception e)
                {
                    byte[] data = r.ResponseData;

                    if (e != null || data.Length == 0)
                    {
                        return;
                    }

                    GameBase.Scheduler.Add(delegate
                    {
                        if (RespondingBeatmap != beatmap)
                        {
                            return;
                        }

                        WasPlayingAudio = AudioEngine.AudioState == AudioStates.Playing;
                        if (WasPlayingAudio && GameBase.Mode != OsuModes.OnlineSelection && GameBase.Mode != OsuModes.Play)
                        {
                            AudioEngine.AllowRandomSong = false;
                            AudioEngine.TogglePause();
                        }

                        sampleTrack = AudioEngine.PlaySampleAsTrack(data);
                        sampleTrack.Play();

                        fadeInThumbnail();
                    });
                };

                previewRequest.Perform();
            }

            bool hasMap = BeatmapManager.GetBeatmapBySetId(beatmap.setId) != null;

            pButton pbut = null;

            float buttonHeight;

            if (hasMap && !beatmap.HasAttachedDownload && beatmap.hasVideo)
            {
                buttonHeight = 16.25f;
            }
            else if (hasMap || (!beatmap.HasAttachedDownload && beatmap.hasVideo))
            {
                buttonHeight = 20f;
            }
            else
            {
                buttonHeight = 25f;
            }


            if (hasMap)
            {
                pbut = new pButton("Go to map",
                                   new Vector2(background.Position.X, YPOS + y), new Vector2(WIDTH, buttonHeight),
                                   0.92f, Color.SkyBlue,
                                   delegate
                {
                    if (MatchSetup.Match != null || Player.Instance != null)
                    {
                        return;
                    }

                    Beatmap b = BeatmapManager.GetBeatmapBySetId(beatmap.setId);

                    BeatmapManager.Current = b;
                    GameBase.ChangeMode(OsuModes.SelectPlay, true);

                    HideResponseDialog();
                }, false, true);
                ResponseSprites.AddRange(pbut.SpriteCollection);

                y += buttonHeight + 2;
            }

            pbut = new pButton(beatmap.HasAttachedDownload ? "Cancel DL" : "Download",
                               new Vector2(background.Position.X, YPOS + y), new Vector2(WIDTH, buttonHeight),
                               0.92f, Color.Bisque,
                               delegate
            {
                beatmap.Download();
                HideResponseDialog();
            }, false, true);
            ResponseSprites.AddRange(pbut.SpriteCollection);

            y += buttonHeight + 2;

            if (!beatmap.HasAttachedDownload && beatmap.hasVideo)
            {
                pbut = new pButton("DL NoVideo", new Vector2(background.Position.X, YPOS + y),
                                   new Vector2(WIDTH, buttonHeight), 0.92f, Color.BlueViolet,
                                   delegate
                {
                    beatmap.Download(true);
                    HideResponseDialog();
                }, false, true);
                ResponseSprites.AddRange(pbut.SpriteCollection);

                y += buttonHeight + 2;
            }

            pbut = new pButton("Cancel", new Vector2(background.Position.X, YPOS + y), new Vector2(WIDTH, buttonHeight), 0.92f, Color.Gray,
                               delegate { HideResponseDialog(); }, false, true);
            ResponseSprites.AddRange(pbut.SpriteCollection);

            y += buttonHeight + 2;

            if (beatmap.postid > 0)
            {
                pbut = new pButton("View Post", new Vector2(background.Position.X, YPOS + y),
                                   new Vector2(WIDTH, buttonHeight), 0.92f, Color.YellowGreen,
                                   delegate { GameBase.ProcessStart(String.Format(Urls.FORUM_POST, beatmap.postid)); }, false, true);
                ResponseSprites.AddRange(pbut.SpriteCollection);
            }
            else
            {
                pbut = new pButton("View Thread", new Vector2(background.Position.X, YPOS + y),
                                   new Vector2(WIDTH, buttonHeight), 0.92f, Color.YellowGreen,
                                   delegate { GameBase.ProcessStart(String.Format(Urls.FORUM_TOPIC, beatmap.threadid)); }, false, true);
                ResponseSprites.AddRange(pbut.SpriteCollection);
            }


            y += buttonHeight + 2;

            pbut = new pButton("View Listing", new Vector2(background.Position.X, YPOS + y),
                               new Vector2(WIDTH, buttonHeight), 0.92f, Color.OrangeRed,
                               delegate { GameBase.ProcessStart(String.Format(Urls.BEATMAP_SET_LISTING, beatmap.setId)); }, false, true);
            ResponseSprites.AddRange(pbut.SpriteCollection);


            //The panel isn't yet visible so we are fine to animate as per-usual.
            ResponseSprites.ForEach(s => s.FadeInFromZero(100));
            ResponseSprites.Add(previewThumbnail);

            spriteManager.Add(ResponseSprites);
        }
コード例 #28
0
 public OnlineBeatmapDeletedEventArgs(OnlineBeatmap beatmap)
 {
     Beatmap = beatmap;
 }
コード例 #29
0
 public DownloadStartedEventArgs(OnlineBeatmap beatmap)
 {
     Beatmap = beatmap;
 }
コード例 #30
0
        private void req_onFinish(pWebRequest r, Exception e)
        {
            lock (Beatmaps)
            {
                if (pageOffset == 0)
                {
                    Beatmaps.ForEach(b => b.Dispose());
                    Beatmaps.Clear();
                    resultsPane.SetScrollPosition(Vector2.Zero);
                }

                try
                {
                    string[] lines = r.ResponseString.Split('\n');

                    int status = Int32.Parse(lines[0]);

                    tempIncoming = string.Empty;

                    if (status < 0)
                    {
                        searchInfo.Text = "Error: " + lines[1];
                    }
                    else
                    {
                        for (int i = 1; i < lines.Length; i++)
                        {
                            if (lines[i].Length == 0)
                            {
                                continue;
                            }
                            OnlineBeatmap ob = new OnlineBeatmap(lines[i]);
                            ob.OnDownloadFinished += delegate
                            {
                                lock (Beatmaps)
                                    Beatmaps.Remove(ob);
                                newResults = true;
                                ob.Dispose();
                            };
                            if (displayExisting.Checked || !ob.exists)
                            {
                                Beatmaps.Add(ob);
                            }
                        }

                        canLoadMore = status > 100 && pageOffset != 39;

                        status = Math.Min(100, status);

                        int totalCount = (pageOffset * 100 + status);

                        if (canLoadMore)
                        {
                            searchInfo.Text = "Over " + totalCount + " results found.";
                        }
                        else
                        {
                            searchInfo.Text = totalCount + " result" + (totalCount != 1 ? "s" : "") + " found.";
                        }
                    }
                }
                catch
                {
                }
            }

            newResults = true;
        }