예제 #1
0
//! 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);
	}
}