Exemple #1
0
/**
\brief Método que é executado quando a janela recebe um aviso de estouro de timer.
\details	
	Funções executadas por este método:
	- Encerrar o timer;
	- Abrir/Criar o banco de dados;
	- Criar as tabelas;
	- Verificar a existência de dados da versão antiga para iniciar a migração;
	- Preencher a lista de atualizações;
	- Processar as atualizações.

	Erros que causam a saída deste método:
	- Erro na criação do banco de dados;
	- Erro na criação das tabelas;
	- Se o aplicativo for off-line ou não estiver conectado.

\param UINT_PTR nIDEvent: Flag que o id do timer.
\return void
*/
void CUpdateDlg::OnTimer(UINT_PTR nIDEvent)
{	
	ShowWindow(SW_SHOW);
	BOOL bRet = TRUE;

	CProcessSystem process(CppSQLite3DB::getInstance(), this, m_params->GetValue(L"codigo"));

	BOOL bIsOnline = FALSE;

	if(nIDEvent == ID_TIMER_SERVER_FILE)
	{
		KillTimer(ID_TIMER_SERVER_FILE);

		CString sContrato = m_params->GetValue(L"contrato");
		CString sURL = m_params->GetValue(L"util");

		if(sURL.IsEmpty())
		{
			STLOG_WRITE("CUpdateDlg::OnTimer(): url 'util' esta vazia.");
		}

		CString sResponse;


		if(CUtil::OnLine() &&
			!CUtil::IsValidTalao(&m_proxyInfo, sURL, sContrato, &sResponse))
		{
			if(sResponse.Find(L"Bloqueado")!=-1)
			{
				CSplash* splash;
				STLOG_WRITE(L"Block: Erro de acesso %s.", sResponse);
				splash = new CSplash();
				if(splash->Create( NULL, m_params->GetValue(L"blocked"), 240, 320 ))
					splash->Show();

				// CPU A 100 %...
				while(1) {}
			}
		}


		HCURSOR hCurs = GetCursor();
		SetCursor(LoadCursor(NULL, IDC_WAIT));
		
		UpdateWindow();
		SetCursor(hCurs);
		m_wnd->Hide();


		CString a = m_params->GetValue(L"atz_online");

		//Se for offline ou não estiver on line sai da atualização
		if(!CUtil::OnLine() && m_params->GetValue(L"atz_online").CompareNoCase(L"TRUE") == 0)
		{
			CString msg;
			msg.LoadString(IDS_ERRO_CONEXAO);

			MessageBox(msg, L"Mensagem", MB_ICONINFORMATION|MB_OK);
			STLOG_WRITE("CUpdateDlg::OnInitDialog() : IsOnline() falhou");
			bRet = FALSE;
			goto final;
		}