[Digikam-devel] [Bug 133359] WISH: Google maps support to show satellite images of the photos
Gilles Caulier
caulier.gilles at free.fr
Fri Sep 22 11:42:16 BST 2006
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=133359
------- Additional Comments From caulier.gilles free fr 2006-09-22 12:42 -------
SVN commit 587322 by cgilles:
kipi-plugins from trunk : GPSSync tool : added new option to set camera time-zone in hours to match properly all pictures with GPS data using GMT time.
CCMAIL: kde-imaging kde org, alexios.beveratos gmail com, gerhard kulzer net
CCBUGS: 133359, 111560
M +13 -3 gpsdataparser.cpp
M +2 -1 gpsdataparser.h
M +45 -2 gpssyncdialog.cpp
--- trunk/extragear/libs/kipi-plugins/gpssync/gpsdataparser.cpp #587321:587322
@ -58,13 +58,23 @
return m_GPSDataMap.count();
}
-bool GPSDataParser::parseDates(QDateTime dateTime, int averageSecs, double& alt, double& lat, double& lon)
+bool GPSDataParser::parseDates(QDateTime photoDateTime, int accuracySecs, int timeZone,
+ double& alt, double& lat, double& lon)
{
+ // GPS device are sync in time by satelite using GMT time.
+ // If the camera time is different than GMT time, we need to convert it to GMT time
+ // Using the time zone.
+ QDateTime cameraGMTDateTime = photoDateTime.addSecs(timeZone*3600*(-1));
+
for (GPSDataMap::Iterator it = m_GPSDataMap.begin();
it != m_GPSDataMap.end(); ++it )
{
- int nbSecs = abs(dateTime.secsTo( it.key() ));
- if( nbSecs < averageSecs )
+ // Here we check a possible accuracy in seconds between the
+ // Camera GMT time and the GPS device GMT time.
+
+ int nbSecs = abs(cameraGMTDateTime.secsTo( it.key() ));
+
+ if( nbSecs < accuracySecs )
{
GPSDataContainer data = m_GPSDataMap[it.key()];
alt = data.altitude();
--- trunk/extragear/libs/kipi-plugins/gpssync/gpsdataparser.h #587321:587322
@ -50,7 +50,8 @
void clear();
int numPoints();
- bool parseDates(QDateTime dateTime, int averageSecs, double& alt, double& lat, double& lon);
+ bool parseDates(QDateTime photoDateTime, int accuracySecs, int timeZone,
+ double& alt, double& lat, double& lon);
private:
--- trunk/extragear/libs/kipi-plugins/gpssync/gpssyncdialog.cpp #587321:587322
@ -21,6 +21,7 @
// Qt includes.
+#include <qcombobox.h>
#include <qlayout.h>
#include <qlabel.h>
#include <qvgroupbox.h>
@ -69,10 +70,13 @
maxGapInput = 0;
gpxFileName = 0;
gpxPointsLabel = 0;
+ timeZoneCB = 0;
}
QLabel *gpxPointsLabel;
+ QComboBox *timeZoneCB;
+
KListView *listView;
KIntSpinBox *maxGapInput;
@ -129,7 +133,7 @
d->listView->addColumn( i18n("Latitude") );
d->listView->addColumn( i18n("Longitude") );
d->listView->addColumn( i18n("Date") );
- d->listView->addColumn( i18n("Extrapoled") );
+ d->listView->addColumn( i18n("Status") );
d->listView->setResizeMode(QListView::AllColumns);
d->listView->setAllColumnsShowFocus(true);
d->listView->setSorting(-1);
@ -153,12 +157,45 @
QWhatsThis::add(d->maxGapInput, i18n("<p>Set here the maximum distance in "
"seconds from a GPS point that a photo will be matched."));
+ QLabel *timeZoneLabel = new QLabel(i18n("Time zone:"), settingsBox);
+ d->timeZoneCB = new QComboBox( false, settingsBox );
+ d->timeZoneCB->insertItem(i18n("-12"), 0);
+ d->timeZoneCB->insertItem(i18n("-11"), 1);
+ d->timeZoneCB->insertItem(i18n("-10"), 2);
+ d->timeZoneCB->insertItem(i18n("-9"), 3);
+ d->timeZoneCB->insertItem(i18n("-8"), 4);
+ d->timeZoneCB->insertItem(i18n("-7"), 5);
+ d->timeZoneCB->insertItem(i18n("-6"), 6);
+ d->timeZoneCB->insertItem(i18n("-5"), 7);
+ d->timeZoneCB->insertItem(i18n("-4"), 8);
+ d->timeZoneCB->insertItem(i18n("-3"), 9);
+ d->timeZoneCB->insertItem(i18n("-2"), 10);
+ d->timeZoneCB->insertItem(i18n("-1"), 11);
+ d->timeZoneCB->insertItem(i18n("GMT"), 12);
+ d->timeZoneCB->insertItem(i18n("+1"), 13);
+ d->timeZoneCB->insertItem(i18n("+2"), 14);
+ d->timeZoneCB->insertItem(i18n("+3"), 15);
+ d->timeZoneCB->insertItem(i18n("+4"), 16);
+ d->timeZoneCB->insertItem(i18n("+5"), 17);
+ d->timeZoneCB->insertItem(i18n("+6"), 18);
+ d->timeZoneCB->insertItem(i18n("+7"), 19);
+ d->timeZoneCB->insertItem(i18n("+8"), 20);
+ d->timeZoneCB->insertItem(i18n("+9"), 21);
+ d->timeZoneCB->insertItem(i18n("+10"), 22);
+ d->timeZoneCB->insertItem(i18n("+11"), 23);
+ d->timeZoneCB->insertItem(i18n("+12"), 24);
+ QWhatsThis::add(d->timeZoneCB, i18n("<p>Set here the time zone where the "
+ "pictures were taken in, so that the times of the pictures "
+ "can be adjusted to match the GPS data"));
+
settingsBoxLayout->addMultiCellWidget(gpxFileLabel, 0, 0, 0, 1);
settingsBoxLayout->addMultiCellWidget(d->gpxFileName, 1, 1, 0, 1);
settingsBoxLayout->addMultiCellWidget(d->gpxPointsLabel, 2, 2, 0, 1);
settingsBoxLayout->addMultiCellWidget(line, 3, 3, 0, 1);
settingsBoxLayout->addMultiCellWidget(maxGapLabel, 4, 4, 0, 0);
settingsBoxLayout->addMultiCellWidget(d->maxGapInput, 4, 4, 1, 1);
+ settingsBoxLayout->addMultiCellWidget(timeZoneLabel, 5, 5, 0, 0);
+ settingsBoxLayout->addMultiCellWidget(d->timeZoneCB, 5, 5, 1, 1);
// ---------------------------------------------------------------
@ -270,6 +307,7 @
KConfig config("kipirc");
config.setGroup("GPS Sync Settings");
d->maxGapInput->setValue(config.readNumEntry("Max Gap Time", 30));
+ d->timeZoneCB->setCurrentItem(config.readNumEntry("Time Zone", 12));
resize(configDialogSize(config, QString("GPS Sync Dialog")));
}
@ -279,6 +317,7 @
KConfig config("kipirc");
config.setGroup("GPS Sync Settings");
config.writeEntry("Max Gap Time", d->maxGapInput->value() );
+ config.writeEntry("Time Zone", d->timeZoneCB->currentItem() );
saveDialogSize(config, QString("GPS Sync Dialog"));
config.sync();
@ -293,7 +332,11 @
{
GPSListViewItem *item = (GPSListViewItem*) it.current();
double alt =0.0, lat=0.0, lng = 0.0;
- if (d->gpxParser.parseDates(item->getDateTime(), d->maxGapInput->value(), alt, lat, lng))
+
+ if (d->gpxParser.parseDates(item->getDateTime(),
+ d->maxGapInput->value(),
+ d->timeZoneCB->currentItem()-12,
+ alt, lat, lng))
{
item->setGPSInfo(alt, lat, lng);
itemsUpdated++;
More information about the Digikam-devel
mailing list