void
NetClientDlg::Show()
{
    int selected_index = -1;

    if (!IsShown()) {
        FormWindow::Show();

        // try to retrieve list of active servers from web broker
        if (config && lst_servers) {
            selected_index = config->GetServerIndex();
            lst_servers->ClearItems();
            config->Download();
        }
    }

    if (config && lst_servers) {
        if (lst_servers->NumItems() != config->GetServerList().size())
        ShowServers();
        else
        UpdateServers();

        if (selected_index >= 0 && selected_index < lst_servers->NumItems()) {
            config->SetServerIndex(selected_index);
            lst_servers->SetSelected(selected_index);
            OnSelect(0);
        }
    }
}
void
NetClientDlg::ExecFrame()
{
    if (!config || !lst_servers) return;

    if (lst_servers->NumItems() != config->GetServerList().size())
    ShowServers();
    else
    UpdateServers();

    NetServerInfo* info = config->GetServerInfo(server_index);

    bool del_enabled   = info != 0;
    bool join_enabled  = info != 0 && info->status > NetServerInfo::OFFLINE;
    bool host_enabled  = join_enabled && info->hosted == 0;

    if (btn_host)
    btn_host->SetEnabled(host_enabled);

    if (btn_join)
    btn_join->SetEnabled(join_enabled);

    if (btn_del)
    btn_del->SetEnabled(del_enabled);
}
void CFolderJoin::UpdateLists(LTBOOL bForce)
{
	// Check for a forced update...

	if (m_bForceNextUpdate)
	{
        bForce             = LTTRUE;
        m_bForceNextUpdate = LTFALSE;
	}


	// Check if we got a new server...

	static LTBOOL bDelayNewServer = LTFALSE;

	LTBOOL bNewServer = LTFALSE;

	if (GetGameSpyClientMgr()->ExistNewServer())
	{
		bNewServer = LTTRUE;
	}

	if (bDelayNewServer)
	{
		bNewServer = LTTRUE;
	}


	// Make sure we don't do a full update too often...

	static uint32 timeLastFullUpdate = 0;

	if (!bForce && bNewServer)
	{
		if ((GetTickCount() - timeLastFullUpdate) < 1000)
		{
			bDelayNewServer = LTTRUE;
		}
		else
		{
			bForce = LTTRUE;
		}
	}
	else if (bNewServer)
	{
		bForce = LTTRUE;
	}

	if (bForce)
	{
		timeLastFullUpdate = GetTickCount();
		bDelayNewServer    = LTFALSE;
	}


	// Do the updates...

	UpdateServers(bForce);
	UpdatePlayers(bForce);
	UpdateOptions(bForce);
}