134 iNetworkInfoTimer = CPeriodic::NewL( CActive::EPriorityStandard ); |
134 iNetworkInfoTimer = CPeriodic::NewL( CActive::EPriorityStandard ); |
135 |
135 |
136 #ifdef LOC_REVERSEGEOCODE |
136 #ifdef LOC_REVERSEGEOCODE |
137 iTagCreator = CTagCreator::NewL(); |
137 iTagCreator = CTagCreator::NewL(); |
138 |
138 |
139 |
139 iRevGeocoderPlugin = reinterpret_cast<CReverseGeoCoderPlugin*>( |
140 if (!iRevGeocoderPlugin) |
140 REComSession::CreateImplementationL(KReverseGeoCodeUid,iDtorKey)); |
141 { |
141 |
142 iRevGeocoderPlugin = reinterpret_cast<CReverseGeoCoderPlugin*>( |
142 iRevGeocoderPlugin->AddObserverL(*this); |
143 REComSession::CreateImplementationL(KReverseGeoCodeUid,iDtorKey)); |
143 |
144 if(iRevGeocoderPlugin) |
144 |
145 { |
|
146 iRevGeocoderPlugin->AddObserverL(*this); |
|
147 } |
|
148 } |
|
149 |
145 |
150 #endif |
146 #endif |
151 |
147 |
152 |
148 |
153 TInt interval( 0 ); |
149 TInt interval( 0 ); |
360 _LIT( KDateTimeFormat, "%Y/%M/%D %H:%T:%S" ); |
356 _LIT( KDateTimeFormat, "%Y/%M/%D %H:%T:%S" ); |
361 const TInt DateTimeStrMaxLength = 20; |
357 const TInt DateTimeStrMaxLength = 20; |
362 LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %Ld", aTime.Int64() ); |
358 LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %Ld", aTime.Int64() ); |
363 TBuf<DateTimeStrMaxLength> str1; |
359 TBuf<DateTimeStrMaxLength> str1; |
364 aTime.FormatL( str1, KDateTimeFormat ); |
360 aTime.FormatL( str1, KDateTimeFormat ); |
365 // LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %S", &str1 ); |
361 LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %S", &str1 ); |
366 #endif |
362 #endif |
367 |
363 |
368 TTimeIntervalSeconds interval; |
364 TTimeIntervalSeconds interval; |
369 TTimeIntervalSeconds nextInterval; |
365 TTimeIntervalSeconds nextInterval; |
370 for ( TInt i(iTrail.Count()-1) ; i >= 0 && !posFound ; i-- ) |
366 for ( TInt i(iTrail.Count()-1) ; i >= 0 && !posFound ; i-- ) |
375 |
371 |
376 #ifdef _DEBUG |
372 #ifdef _DEBUG |
377 LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %Ld", iTrail[i]->iTimeStamp.Int64() ); |
373 LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %Ld", iTrail[i]->iTimeStamp.Int64() ); |
378 TBuf<DateTimeStrMaxLength> str; |
374 TBuf<DateTimeStrMaxLength> str; |
379 iTrail[i]->iTimeStamp.FormatL( str, KDateTimeFormat ); |
375 iTrail[i]->iTimeStamp.FormatL( str, KDateTimeFormat ); |
380 //LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %S", &str ); |
376 LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %S", &str ); |
381 LOG1( "CLocationRecord::GetLocationByTimeL - timeDiff: %d", timeDiff ); |
377 LOG1( "CLocationRecord::GetLocationByTimeL - timeDiff: %d", timeDiff ); |
382 #endif |
378 #endif |
383 |
379 |
384 if ( err == KErrNone && timeDiff <= KMaximumIntervalSeconds ) |
380 if ( err == KErrNone && timeDiff <= KMaximumIntervalSeconds ) |
385 { |
381 { |
1205 } |
1201 } |
1206 |
1202 |
1207 const TReal64 KMeterInDegrees = 0.000009; |
1203 const TReal64 KMeterInDegrees = 0.000009; |
1208 const TReal64 KPi = 3.14159265358979; |
1204 const TReal64 KPi = 3.14159265358979; |
1209 const TReal32 K180Degrees = 180.0; |
1205 const TReal32 K180Degrees = 180.0; |
1210 |
|
1211 //TLocationData locationData = iMediaItems[0].iLocationData; |
|
1212 |
1206 |
1213 TReal64 latitude = iMediaItems[0]->iLocationData.iPosition.Latitude(); |
1207 TReal64 latitude = iMediaItems[0]->iLocationData.iPosition.Latitude(); |
1214 TReal64 longitude = iMediaItems[0]->iLocationData.iPosition.Longitude(); |
1208 TReal64 longitude = iMediaItems[0]->iLocationData.iPosition.Longitude(); |
1215 // calculate distance in degrees |
1209 // calculate distance in degrees |
1216 TReal64 cosine; |
1210 TReal64 cosine; |
1579 void CLocationRecord::HandleFindLocationFromDB() |
1573 void CLocationRecord::HandleFindLocationFromDB() |
1580 { |
1574 { |
1581 LOG( "CLocationRecord::HandleFindLocationFromDB(), begin" ); |
1575 LOG( "CLocationRecord::HandleFindLocationFromDB(), begin" ); |
1582 if ( iMediaItems.Count() > 0 ) |
1576 if ( iMediaItems.Count() > 0 ) |
1583 { |
1577 { |
1584 //TODO: by module owner |
|
1585 TInt trapErr = KErrNone; |
1578 TInt trapErr = KErrNone; |
1586 TRAP(trapErr,FindLocationFromDBL()); |
1579 TRAP(trapErr,FindLocationFromDBL()); |
1587 // no memory, don't proceed further |
1580 // no memory, don't proceed further |
1588 // other error sceenario, we can move the node to the end and process the next |
1581 // other error sceenario, we can move the node to the end and process the next |
1589 if(trapErr != KErrNoMemory && trapErr != KErrNone) |
1582 if(trapErr != KErrNoMemory && trapErr != KErrNone) |
1850 iGeoConverter->ConvertL(iMediaItems[0]->iLocationData.iNetworkInfo); |
1843 iGeoConverter->ConvertL(iMediaItems[0]->iLocationData.iNetworkInfo); |
1851 iMediaHandlingFlag |= KSnapGeoConvertInProgress; |
1844 iMediaHandlingFlag |= KSnapGeoConvertInProgress; |
1852 iMediaHandlingFlag &= ~KSnapGeoConvertInPendingState; |
1845 iMediaHandlingFlag &= ~KSnapGeoConvertInPendingState; |
1853 } |
1846 } |
1854 #else |
1847 #else |
|
1848 // cell id based geo tagging is not supported.. go for remapping. |
1855 locationId = DoCreateLocationL( iMediaItems[0]->iLocationData ); |
1849 locationId = DoCreateLocationL( iMediaItems[0]->iLocationData ); |
1856 iMediaItems[0]->iLocationId = locationId; |
1850 iMediaItems[0]->iLocationId = locationId; |
1857 CreateRelationL( iMediaItems[0]->iObjectId, locationId ); |
1851 TItemId relationId = CreateRelationL( iMediaItems[0]->iObjectId, locationId ); |
1858 TLocationSnapshotItem* firstPtr = iMediaItems[0]; |
1852 TLocationSnapshotItem* firstPtr = iMediaItems[0]; |
|
1853 |
|
1854 // Go for remapping.. get locationdata from trail with object time |
|
1855 TTime timestamp = GetMdeObjectTimeL( iMediaItems[0]->iObjectId ); |
|
1856 TRemapItem remapItem; |
|
1857 remapItem.iObjectId = iMediaItems[0]->iObjectId; |
|
1858 remapItem.iTime = timestamp; |
|
1859 remapItem.iLocationId = locationId; |
|
1860 remapItem.iRelationId = relationId; |
|
1861 iRemapper->Append( remapItem ); |
|
1862 |
1859 iMediaItems.Remove(0); |
1863 iMediaItems.Remove(0); |
1860 delete firstPtr; |
1864 delete firstPtr; |
1861 iMediaItems.Compress(); |
1865 iMediaItems.Compress(); |
1862 iMediaHandlingFlag &= ~KLocationQueryInProgress; |
1866 iMediaHandlingFlag &= ~KLocationQueryInProgress; |
1863 if ( iMediaItems.Count() > 0 ) |
1867 if ( iMediaItems.Count() > 0 ) |
1907 iNewItem.iLocationData.iPosition.SetCoordinate |
1911 iNewItem.iLocationData.iPosition.SetCoordinate |
1908 ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude()); |
1912 ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude()); |
1909 iNewItem.iLocationData.iQuality = aPosition.HorizontalAccuracy(); |
1913 iNewItem.iLocationData.iQuality = aPosition.HorizontalAccuracy(); |
1910 TItemId locationId = DoCreateLocationL( iNewItem.iLocationData ); |
1914 TItemId locationId = DoCreateLocationL( iNewItem.iLocationData ); |
1911 iRemapper->UpdateRelationsL( locationId ); |
1915 iRemapper->UpdateRelationsL( locationId ); |
1912 // TODO: remap. |
|
1913 #ifdef LOC_REVERSEGEOCODE |
1916 #ifdef LOC_REVERSEGEOCODE |
1914 if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress)) |
1917 if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress)) |
1915 { |
1918 { |
1916 iRemapState = ERemapRevGeoCodeInProgress; |
1919 iRemapState = ERemapRevGeoCodeInProgress; |
1917 //Find the address by coordinate, results a call to ReverseGeocodeComplete() |
1920 //Find the address by coordinate, results a call to ReverseGeocodeComplete() |
1937 ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude()); |
1940 ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude()); |
1938 iMediaItems[0]->iLocationData.iQuality = aPosition.HorizontalAccuracy(); |
1941 iMediaItems[0]->iLocationData.iQuality = aPosition.HorizontalAccuracy(); |
1939 TLocationSnapshotItem* item = iMediaItems[0]; |
1942 TLocationSnapshotItem* item = iMediaItems[0]; |
1940 TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData ); |
1943 TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData ); |
1941 iMediaItems[0]->iLocationId = locationId; |
1944 iMediaItems[0]->iLocationId = locationId; |
1942 CreateRelationL( iMediaItems[0]->iObjectId, locationId ); |
1945 TItemId relationId = CreateRelationL( iMediaItems[0]->iObjectId, locationId ); |
|
1946 |
|
1947 // Go for remapping.. get locationdata from trail with object time |
|
1948 TTime timestamp = GetMdeObjectTimeL( iMediaItems[0]->iObjectId ); |
|
1949 TRemapItem remapItem; |
|
1950 remapItem.iObjectId = iMediaItems[0]->iObjectId; |
|
1951 remapItem.iTime = timestamp; |
|
1952 remapItem.iLocationId = locationId; |
|
1953 remapItem.iRelationId = relationId; |
|
1954 iRemapper->Append( remapItem ); |
|
1955 |
1943 if((iMediaItems[0]->iFlag & KSnapMediaFile) > 0) |
1956 if((iMediaItems[0]->iFlag & KSnapMediaFile) > 0) |
1944 { |
1957 { |
1945 iLastMediaItem = *(iMediaItems[0]); |
1958 iLastMediaItem = *(iMediaItems[0]); |
1946 } |
1959 } |
1947 iMediaItems.Remove(0); |
1960 iMediaItems.Remove(0); |
1981 { |
1994 { |
1982 TLocationSnapshotItem* item = iMediaItems[0]; |
1995 TLocationSnapshotItem* item = iMediaItems[0]; |
1983 // Fails may be becuase of n/w reason..create location + relation so that we can handle at 3:00 AM. |
1996 // Fails may be becuase of n/w reason..create location + relation so that we can handle at 3:00 AM. |
1984 TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData ); |
1997 TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData ); |
1985 iMediaItems[0]->iLocationId = locationId; |
1998 iMediaItems[0]->iLocationId = locationId; |
1986 CreateRelationL( iMediaItems[0]->iObjectId, locationId ); |
1999 TItemId relationId = CreateRelationL( iMediaItems[0]->iObjectId, locationId ); |
|
2000 |
|
2001 // Go for remapping.. get locationdata from trail with object time |
|
2002 TTime timestamp = GetMdeObjectTimeL( iMediaItems[0]->iObjectId ); |
|
2003 TRemapItem remapItem; |
|
2004 remapItem.iObjectId = iMediaItems[0]->iObjectId; |
|
2005 remapItem.iTime = timestamp; |
|
2006 remapItem.iLocationId = locationId; |
|
2007 remapItem.iRelationId = relationId; |
|
2008 iRemapper->Append( remapItem ); |
1987 |
2009 |
1988 iMediaItems.Remove(0); |
2010 iMediaItems.Remove(0); |
1989 iMediaItems.Compress(); |
2011 iMediaItems.Compress(); |
1990 iMediaHandlingFlag &= ~KLocationQueryInProgress; |
2012 iMediaHandlingFlag &= ~KLocationQueryInProgress; |
1991 delete item; |
2013 delete item; |
2240 cond.AddPropertyConditionL( networkCodeDef, ETextPropertyConditionCompareEquals, |
2262 cond.AddPropertyConditionL( networkCodeDef, ETextPropertyConditionCompareEquals, |
2241 iMediaItems[0]->iLocationData.iNetworkInfo.iNetworkId ); |
2263 iMediaItems[0]->iLocationData.iNetworkInfo.iNetworkId ); |
2242 |
2264 |
2243 iNetLocationQuery->FindL(1, 1); |
2265 iNetLocationQuery->FindL(1, 1); |
2244 iMediaHandlingFlag |= KLocationQueryInProgress; |
2266 iMediaHandlingFlag |= KLocationQueryInProgress; |
2245 // iMediaHandlingFlag |= KNetQueryInProgress; |
|
2246 } |
2267 } |
2247 else |
2268 else |
2248 { |
2269 { |
2249 TLocationSnapshotItem* firstPtr = iMediaItems[0]; |
2270 TLocationSnapshotItem* firstPtr = iMediaItems[0]; |
2250 iMediaItems.Remove(0); |
2271 iMediaItems.Remove(0); |