//! Recarrega a lista de analises disponiveis e os arquivos associados a cada uma delas void TerraMEPlayerDialog::reloadInterface() { // Limpar interface e objetos que guardam em memoria os resultados das analises TerraME _terraMEAnalysisListWidget->clear(); _datetimeListWidget->clear(); _terraMEImageAnalysisWidget->setImageAnalysis(""); _terraMEResult.clear(); _currentAnalysis.clear(); _currentAnalysisResult.clear(); _currentAnalysisImageIndex = 0; _imageCountLabel->setText(""); _changeResultTimer.stop(); // Obter lista de analises TerraME que estao na base de dados e atualizar a interface AnalysisList* analysisList = _manager->analysisList(); for(int i = 0; analysisList && i < analysisList->count(); ++i) { Analysis* ana = analysisList->at(i); if(ana->getAnalysisType() == WS_ANALYSISTYPE_TERRAME) { QListWidgetItem* item = new QListWidgetItem(ana->name()); item->setData(Qt::UserRole, ana->id()); _terraMEAnalysisListWidget->addItem(item); } } // Carregar os logs das analises TerraME std::vector<wsAnalysisLog> terraMEAnalysisLogs; _manager->getAllTerraMEAnalysisLogs(terraMEAnalysisLogs); // Montar objeto que vai guardar, para cada analise TerraME, um conjunto de timestamps que // representa os momentos em que cada analise foi executada. E para cada timestamp estara associado // um conjunto de imagens geradas. for(int i = 0; i < terraMEAnalysisLogs.size(); ++i) { wsAnalysisLog log = terraMEAnalysisLogs[i]; // Acessar diretorio de imagens desta analise QDir dir(log.terraMEImagePath.c_str()); if(dir.exists()) { // Obter lista de imagens, ordenadas pela hora da modificacao do arquivo. QFileInfoList imageFileNameList = dir.entryInfoList(_imageFileFilter, QDir::Files, QDir::Name); // Se foram encontradas imagens, guardar referencia para elas if(!imageFileNameList.isEmpty()) { QDateTime dateTime(QDate(log.dateStartYear, log.dateStartMonth, log.dateStartDay), QTime(log.timeStartHour, log.timeStartMinutes, log.timeStartSeconds)); TerraMEAnalysisResult analysisResult(dateTime, imageFileNameList); _terraMEResult[log.analysisId].push_back(analysisResult); } } } // Ordenar resultados pela data/hora da execucao da analise QMapIterator<int, QList<TerraMEAnalysisResult> > it(_terraMEResult); while(it.hasNext()) { it.next(); qSort(_terraMEResult[it.key()].begin(), _terraMEResult[it.key()].end()); } // Se alguma analise TerraME foi encontrada, selecionar a primeira if(_terraMEAnalysisListWidget->count() > 0) { _terraMEAnalysisListWidget->setCurrentRow(0); } }