private void onServerUpdated(Server server)
        {
            if (!taskInProgress)
            {
                return;
            }
            if (serverBrowserView.InvokeRequired)
            {
                onServerUpdatedCallback c = new onServerUpdatedCallback(onServerUpdated);
                this.Invoke(c, new object[] { server });
                return;
            }

            if (server.queryStatus == Server.ServerQueryStatus.Failed)
            {
                if (currentFilter.Favourites != Filter.YNA.Yes)
                {
                    serverBrowserView.Items.Remove(server.rowItem);
                }
                else
                {
                    server.rowItem.BackColor = Color.OrangeRed;
                }
                return;
            }
            else if (server.queryStatus == Server.ServerQueryStatus.TimedOut)
            {
                if (currentFilter.Favourites != Filter.YNA.Yes)
                {
                    serverBrowserView.Items.Remove(server.rowItem);
                }
                else
                {
                    server.rowItem.BackColor = Color.Gray;
                }
                return;
            }
            else if (server.queryStatus == Server.ServerQueryStatus.Successful &&
                     !currentFilter.serverMatchesFilter(server, favMngr, friendMngr))
            {
                serverBrowserView.Items.Remove(server.rowItem);
            }
            else if (server.queryStatus == Server.ServerQueryStatus.Successful)
            {
                // update that individual list item
                if (server.rowItem.SubItems.Count != 9)
                {
                    server.rowItem.SubItems.Clear();
                    server.rowItem.SubItems.Add(HelperFunctions.removeColourCodes(server.serverName));
                    server.rowItem.SubItems.Add(favMngr.isFavourite(server) ? "X" : "-");
                    server.rowItem.SubItems.Add(string.Format("{0} ({1})", server.serverPing.ToString(), server.serverDvars["sv_maxPing"]));
                    server.rowItem.SubItems.Add(string.Format("{0} / {1}", server.serverNPlayers, server.serverMaxPlayers));
                    server.rowItem.SubItems.Add(HelperFunctions.gameTypeToFullname(server.serverGametype));
                    server.rowItem.SubItems.Add(HelperFunctions.mapToFullname(server.serverMap));
                    server.rowItem.SubItems.Add(server.serverMod);
                    server.rowItem.SubItems.Add(server.serverDvars["g_hardcore"].Equals("1") ? "X" : "-");
                }
                else
                {
                    server.rowItem.SubItems[1].Text = HelperFunctions.removeColourCodes(server.serverName);
                    server.rowItem.SubItems[2].Text = favMngr.isFavourite(server) ? "X" : "-";
                    server.rowItem.SubItems[3].Text = string.Format("{0} ({1})", server.serverPing.ToString(), server.serverDvars["sv_maxPing"]);
                    server.rowItem.SubItems[4].Text = string.Format("{0} / {1}", server.serverNPlayers, server.serverMaxPlayers);
                    server.rowItem.SubItems[5].Text = HelperFunctions.gameTypeToFullname(server.serverGametype);
                    server.rowItem.SubItems[6].Text = HelperFunctions.mapToFullname(server.serverMap);
                    server.rowItem.SubItems[7].Text = server.serverMod;
                    if (server.serverDvars.ContainsKey("g_hardcore"))
                    {
                        server.rowItem.SubItems[8].Text = (server.serverDvars["g_hardcore"].Equals("1") ? "X" : "-");
                    }
                    else
                    {
                        server.rowItem.SubItems[8].Text = "";
                    }
                }
            }
            if (infoDlg.currentServer == server)
            {
                infoDlg.updateDlg(server); // if the info dlg exists, update it with the correct info
            }
            serverBrowserView.Sort();
        }
        private void onServerUpdated(Server server)
        {
            if (!taskInProgress)
                return;
            if (serverBrowserView.InvokeRequired)
            {
                onServerUpdatedCallback c = new onServerUpdatedCallback(onServerUpdated);
                this.Invoke(c, new object[] { server });
                return;
            }

            if (server.queryStatus == Server.ServerQueryStatus.Failed)
            {
                if (currentFilter.Favourites != Filter.YNA.Yes)
                    serverBrowserView.Items.Remove(server.rowItem);
                else
                    server.rowItem.BackColor = Color.OrangeRed;
                return;
            }
            else if (server.queryStatus == Server.ServerQueryStatus.TimedOut)
            {
                if (currentFilter.Favourites != Filter.YNA.Yes)
                    serverBrowserView.Items.Remove(server.rowItem);
                else
                    server.rowItem.BackColor = Color.Gray;
                return;
            }
            else if (server.queryStatus == Server.ServerQueryStatus.Successful &&
                !currentFilter.serverMatchesFilter(server, favMngr, friendMngr))
            {
                serverBrowserView.Items.Remove(server.rowItem);
            }
            else if (server.queryStatus == Server.ServerQueryStatus.Successful)
            {
                // update that individual list item
                if (server.rowItem.SubItems.Count != 9)
                {
                    server.rowItem.SubItems.Clear();
                    server.rowItem.SubItems.Add(HelperFunctions.removeColourCodes(server.serverName));
                    server.rowItem.SubItems.Add(favMngr.isFavourite(server) ? "X" : "-");
                    server.rowItem.SubItems.Add(string.Format("{0} ({1})", server.serverPing.ToString(), server.serverDvars["sv_maxPing"]));
                    server.rowItem.SubItems.Add(string.Format("{0} / {1}", server.serverNPlayers, server.serverMaxPlayers));
                    server.rowItem.SubItems.Add(HelperFunctions.gameTypeToFullname(server.serverGametype));
                    server.rowItem.SubItems.Add(HelperFunctions.mapToFullname(server.serverMap));
                    server.rowItem.SubItems.Add(server.serverMod);
                    server.rowItem.SubItems.Add(server.serverDvars["g_hardcore"].Equals("1") ? "X" : "-");
                }
                else
                {
                    server.rowItem.SubItems[1].Text = HelperFunctions.removeColourCodes(server.serverName);
                    server.rowItem.SubItems[2].Text = favMngr.isFavourite(server) ? "X" : "-";
                    server.rowItem.SubItems[3].Text = string.Format("{0} ({1})", server.serverPing.ToString(), server.serverDvars["sv_maxPing"]);
                    server.rowItem.SubItems[4].Text = string.Format("{0} / {1}", server.serverNPlayers, server.serverMaxPlayers);
                    server.rowItem.SubItems[5].Text = HelperFunctions.gameTypeToFullname(server.serverGametype);
                    server.rowItem.SubItems[6].Text = HelperFunctions.mapToFullname(server.serverMap);
                    server.rowItem.SubItems[7].Text = server.serverMod;
                    if (server.serverDvars.ContainsKey("g_hardcore"))
                        server.rowItem.SubItems[8].Text = (server.serverDvars["g_hardcore"].Equals("1") ? "X" : "-");
                    else
                        server.rowItem.SubItems[8].Text = "";
                }
            }
            if (infoDlg.currentServer == server)
                infoDlg.updateDlg(server); // if the info dlg exists, update it with the correct info

            serverBrowserView.Sort();
        }