X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Ffunction%2FAsyncMediaLoader.java;h=78ffc838197450079cf935f6da59cdd1186b35e4;hp=f8a505aad164aeb85af3a9ca64f48cd6c6920428;hb=1ea5817da5381ceebee75ea7294ea78dffff5671;hpb=a6197ddcaac11c0b943183da7d46169742d024af diff --git a/tim/prune/function/AsyncMediaLoader.java b/tim/prune/function/AsyncMediaLoader.java index f8a505a..78ffc83 100644 --- a/tim/prune/function/AsyncMediaLoader.java +++ b/tim/prune/function/AsyncMediaLoader.java @@ -8,9 +8,12 @@ import tim.prune.GenericFunction; import tim.prune.I18nManager; import tim.prune.UpdateMessageBroker; import tim.prune.data.AudioClip; +import tim.prune.data.DataPoint; +import tim.prune.data.Distance; import tim.prune.data.MediaObject; import tim.prune.data.Photo; import tim.prune.data.Track; +import tim.prune.data.UnitSetLibrary; import tim.prune.load.MediaHelper; import tim.prune.load.MediaLoadProgressDialog; import tim.prune.undo.UndoLoadAudios; @@ -99,14 +102,30 @@ implements Runnable, Cancellable MediaObject mf = MediaHelper.createMediaObject(_zipFile, _linkArray[i], _sourceFile); if (mf != null) { + // Check if the media object has a point now (from exif) + DataPoint exifPoint = mf.getDataPoint(); // attach media to point and set status _track.getPoint(i).attachMedia(mf); - mf.setOriginalStatus(MediaObject.Status.TAGGED); - mf.setCurrentStatus(MediaObject.Status.TAGGED); + // Check exif to see whether media was already tagged + final MediaObject.Status originalMediaStatus = + (exifPoint == null ? MediaObject.Status.NOT_CONNECTED : MediaObject.Status.TAGGED); + mf.setOriginalStatus(originalMediaStatus); + MediaObject.Status currMediaStatus = MediaObject.Status.TAGGED; + if (exifPoint != null) + { + final double distinMetres = Distance.convertRadiansToDistance( + DataPoint.calculateRadiansBetween(exifPoint, _track.getPoint(i)), + UnitSetLibrary.UNITS_METRES); + if (distinMetres > 10.0) { + currMediaStatus = MediaObject.Status.CONNECTED; // still connected but changed + } + } + mf.setCurrentStatus(currMediaStatus); media[currLink] = mf; // update progress - if (!_app.isBusyLoading()) + if (!_app.isBusyLoading()) { progressDialog.showProgress(currLink, numLinks); + } currLink++; } try {Thread.sleep(100);} catch (InterruptedException ie) {}