/** \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; }