void GPSCorrelatorWidget::slotItemsCorrelated(const Digikam::TrackCorrelator::Correlation::List& correlatedItems) { qCDebug(DIGIKAM_GENERAL_LOG) << correlatedItems.count(); d->correlationTriedCount += correlatedItems.count(); for (int i = 0; i < correlatedItems.count(); ++i) { const TrackCorrelator::Correlation& itemCorrelation = correlatedItems.at(i); const QPersistentModelIndex itemIndex = itemCorrelation.userData.value<QPersistentModelIndex>(); if (!itemIndex.isValid()) continue; GPSImageItem* const imageItem = d->imageModel->itemFromIndex(itemIndex); if (!imageItem) continue; if (itemCorrelation.flags&TrackCorrelator::CorrelationFlagCoordinates) { d->correlationCorrelatedCount++; GPSDataContainer newData; newData.setCoordinates(itemCorrelation.coordinates); if (itemCorrelation.nSatellites >= 0) newData.setNSatellites(itemCorrelation.nSatellites); // if hDop is available, use it if (itemCorrelation.hDop >= 0) newData.setDop(itemCorrelation.hDop); // but if pDop is available, prefer pDop over hDop if (itemCorrelation.pDop >= 0) newData.setDop(itemCorrelation.pDop); if (itemCorrelation.fixType >= 0) { newData.setFixType(itemCorrelation.fixType); } if (itemCorrelation.speed >= 0) { newData.setSpeed(itemCorrelation.speed); } GPSUndoCommand::UndoInfo undoInfo(itemIndex); undoInfo.readOldDataFromItem(imageItem); imageItem->setGPSData(newData); undoInfo.readNewDataFromItem(imageItem); d->correlationUndoCommand->addUndoInfo(undoInfo); } } emit(signalProgressChanged(d->correlationTriedCount)); }
void GPSImageDetails::slotApply() { GPSDataContainer newData; if (d->cbCoordinates->isChecked()) { const double lat = d->leLatitude->text().toDouble(); const double lon = d->leLongitude->text().toDouble(); newData.setCoordinates(GeoIface::GeoCoordinates(lat, lon)); if (d->cbAltitude->isChecked()) { const qreal alt = static_cast<qreal>(d->leAltitude->text().toDouble()); newData.setAltitude(alt); } if (d->cbSpeed->isChecked()) { const qreal speed = static_cast<qreal>(d->leSpeed->text().toDouble()); newData.setSpeed(speed); } if (d->cbNSatellites->isChecked()) { const int nSatellites = d->leNSatellites->text().toInt(); newData.setNSatellites(nSatellites); } if (d->cbFixType->isChecked()) { const int fixType = d->comboFixType->itemData(d->comboFixType->currentIndex()).toInt(); newData.setFixType(fixType); } if (d->cbDop->isChecked()) { const qreal dop = static_cast<qreal>(d->leDop->text().toDouble()); newData.setDop(dop); } } GPSImageItem* const gpsItem = d->imageModel->itemFromIndex(d->imageIndex); GPSUndoCommand* const undoCommand = new GPSUndoCommand(); GPSUndoCommand::UndoInfo undoInfo(d->imageIndex); undoInfo.readOldDataFromItem(gpsItem); gpsItem->setGPSData(newData); undoInfo.readNewDataFromItem(gpsItem); undoCommand->addUndoInfo(undoInfo); undoCommand->setText(i18n("Details changed")); emit(signalUndoCommand(undoCommand)); }