23 #include <MPbk2CommandObserver.h> |
23 #include <MPbk2CommandObserver.h> |
24 #include <MPbk2CommandHandler.h> |
24 #include <MPbk2CommandHandler.h> |
25 #include <MPbk2ApplicationServices.h> |
25 #include <MPbk2ApplicationServices.h> |
26 #include <MPbk2AppUi.h> |
26 #include <MPbk2AppUi.h> |
27 #include <CPbk2FieldPropertyArray.h> |
27 #include <CPbk2FieldPropertyArray.h> |
28 #include <pbk2mapuires.rsg> |
28 #include <Pbk2MapUIRes.rsg> |
29 #include <MPbk2ContactEditorControl.h> |
29 #include <MPbk2ContactEditorControl.h> |
30 #include <MPbk2ContactEditorField.h> |
30 #include <MPbk2ContactEditorField.h> |
31 #include <Pbk2UIControls.hrh> |
31 #include <Pbk2UIControls.hrh> |
32 #include <Pbk2Commands.hrh> |
32 #include <Pbk2Commands.hrh> |
33 #include <pbk2uicontrols.rsg> |
33 #include <Pbk2UIControls.rsg> |
34 #include <TPbk2AddressSelectParams.h> |
34 #include <TPbk2AddressSelectParams.h> |
35 #include <CPbk2AddressSelect.h> |
35 #include <CPbk2AddressSelect.h> |
36 #include <Pbk2AddressTools.h> |
36 #include <Pbk2AddressTools.h> |
|
37 #include <Pbk2UIControls.rsg> |
37 #include <CPbk2ApplicationServices.h> |
38 #include <CPbk2ApplicationServices.h> |
38 #include <pbk2mapcommands.hrh> |
39 #include <pbk2mapcommands.hrh> |
39 #include <MPbk2DialogEliminator.h> |
|
40 |
40 |
41 // Virtual Phonebook |
41 // Virtual Phonebook |
42 #include <MVPbkBaseContactField.h> |
42 #include <MVPbkBaseContactField.h> |
43 #include <MVPbkStoreContact.h> |
43 #include <MVPbkStoreContact.h> |
44 #include <MVPbkContactAttributeManager.h> |
44 #include <MVPbkContactAttributeManager.h> |
47 #include <CVPbkFieldTypeSelector.h> |
47 #include <CVPbkFieldTypeSelector.h> |
48 #include <CVPbkFieldFilter.h> |
48 #include <CVPbkFieldFilter.h> |
49 #include <MVPbkStoreContactField.h> |
49 #include <MVPbkStoreContactField.h> |
50 #include <MVPbkContactFieldData.h> |
50 #include <MVPbkContactFieldData.h> |
51 #include <MVPbkContactFieldTextData.h> |
51 #include <MVPbkContactFieldTextData.h> |
52 #include <vpbkeng.rsg> |
52 #include <VPbkEng.rsg> |
53 #include <MVPbkFieldType.h> |
53 #include <MVPbkFieldType.h> |
54 #include <TVPbkFieldVersitProperty.h> |
54 #include <TVPbkFieldVersitProperty.h> |
55 #include <MVPbkStoreContactFieldCollection.h> |
55 #include <MVPbkStoreContactFieldCollection.h> |
56 #include <TVPbkFieldTypeParameters.h> |
56 #include <TVPbkFieldTypeParameters.h> |
57 #include "MPbk2ContactEditorControlExtension.h" |
57 #include "MPbk2ContactEditorControlExtension.h" |
82 #include <StringLoader.h> |
82 #include <StringLoader.h> |
83 |
83 |
84 // Debugging headers |
84 // Debugging headers |
85 #include <Pbk2Debug.h> |
85 #include <Pbk2Debug.h> |
86 |
86 |
87 _LIT( KGeoSeparator, ","); |
87 _LIT(KGeoSeparator, ","); |
|
88 _LIT( KDecimalSepratorEnglish, "." ); |
88 const TInt KGeoSeparatorLength = 1; |
89 const TInt KGeoSeparatorLength = 1; |
89 const TReal32 KGeoHorizontalAccuracy = 0; |
90 const TReal32 KGeoHorizontalAccuracy = 0; |
90 const TInt KGeoMaxSize = 60; |
91 const TInt KGeoMaxSize = 60; |
91 const TInt KGeoFormatWidth = 11; |
92 const TInt KGeoFormatWidth = 11; |
92 |
93 |
268 void CPmapCmd::ExecuteL() |
257 void CPmapCmd::ExecuteL() |
269 { |
258 { |
270 PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING |
259 PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING |
271 ("CPmapCmd::ExecuteLD")); |
260 ("CPmapCmd::ExecuteLD")); |
272 |
261 |
273 TBool amIDestroyed( EFalse ); |
|
274 iThisPtrDestroyed = &amIDestroyed; |
|
275 |
|
276 iAddressUpdatePrompt = ETrue; |
262 iAddressUpdatePrompt = ETrue; |
277 TPbk2FieldGroupId groupId = EPbk2FieldGroupIdNone; |
263 TPbk2FieldGroupId groupId = EPbk2FieldGroupIdNone; |
278 if( !IsAddressInContact() ) |
264 if( !IsAddressInContact() ) |
279 { |
265 { |
280 if( iCommandId == EPbk2ExtensionShowOnMap ) |
266 if( iCommandId == EPbk2ExtensionShowOnMap ) |
877 // -------------------------------------------------------------------------- |
848 // -------------------------------------------------------------------------- |
878 // |
849 // |
879 TBool CPmapCmd::DoFillGeoLandmarkL( |
850 TBool CPmapCmd::DoFillGeoLandmarkL( |
880 CPosLandmark& aLandmark, const TDesC& aDataText ) |
851 CPosLandmark& aLandmark, const TDesC& aDataText ) |
881 { |
852 { |
|
853 HBufC* locationText = aDataText.AllocLC(); |
|
854 |
882 TBool result = EFalse; |
855 TBool result = EFalse; |
883 TInt separator = aDataText.Find( KGeoSeparator ); |
856 TInt separator = locationText->Find( KGeoSeparator ); |
884 if ( separator != KErrNotFound ) |
857 if ( separator != KErrNotFound ) |
885 { |
858 { |
|
859 TLocale localeFethcer; |
|
860 TChar currentDecimalSeparator = localeFethcer.DecimalSeparator(); |
|
861 TBuf<1> currentLangDecSeprator; |
|
862 currentLangDecSeprator.Append( currentDecimalSeparator ); |
|
863 TBuf< KGeoMaxSize > strLatitude; |
|
864 strLatitude.Copy( locationText->Left( separator ) ); |
|
865 |
|
866 TInt descimalSepratorPos = strLatitude.Find( KDecimalSepratorEnglish ); |
|
867 if( descimalSepratorPos != KErrNotFound ) |
|
868 { |
|
869 strLatitude.Delete( descimalSepratorPos, 1 ); |
|
870 strLatitude.Insert( descimalSepratorPos,currentLangDecSeprator ); |
|
871 } |
|
872 |
886 TReal64 latitude = 0; |
873 TReal64 latitude = 0; |
887 TReal64 logitude = 0; |
874 TReal64 logitude = 0; |
888 TLex lexLatitude( aDataText.Left( separator ) ); |
875 TLex lexLatitude( strLatitude ); |
889 TLex lexLogitude( aDataText.Right( aDataText.Length() |
876 |
890 - separator - KGeoSeparatorLength ) ); |
877 TBuf< KGeoMaxSize > strLongitude; |
891 if ( lexLatitude.Val( latitude ) == KErrNone |
878 strLongitude.Copy( locationText->Right( locationText->Length() |
892 && lexLogitude.Val( logitude ) == KErrNone ) |
879 - separator - KGeoSeparatorLength ) ); |
|
880 descimalSepratorPos = strLongitude.Find( KDecimalSepratorEnglish ); |
|
881 if( descimalSepratorPos != KErrNotFound ) |
|
882 { |
|
883 strLongitude.Delete( descimalSepratorPos, 1 ); |
|
884 strLongitude.Insert( descimalSepratorPos,currentLangDecSeprator ); |
|
885 } |
|
886 |
|
887 TLex lexLogitude( strLongitude ); |
|
888 if ( lexLatitude.Val( latitude, currentDecimalSeparator ) == KErrNone |
|
889 && lexLogitude.Val( logitude, currentDecimalSeparator ) == KErrNone ) |
893 { |
890 { |
894 TLocality loc( TCoordinate( latitude, logitude ), |
891 TLocality loc( TCoordinate( latitude, logitude ), |
895 KGeoHorizontalAccuracy ); |
892 KGeoHorizontalAccuracy ); |
896 aLandmark.SetPositionL( loc ); |
893 aLandmark.SetPositionL( loc ); |
897 TInt separator2 = aDataText.Right( aDataText.Length() - separator - KGeoSeparatorLength ).Find( KGeoSeparator ); |
894 TInt separator2 = aDataText.Right( aDataText.Length() - separator - KGeoSeparatorLength ).Find( KGeoSeparator ); |
898 if(separator2 != KErrNotFound) |
895 if(separator2 != KErrNotFound) |
899 { |
896 { |
900 separator += separator2; |
897 separator += separator2; |
901 aLandmark.SetPositionFieldL(EPositionFieldCountryCode,aDataText.Right( aDataText.Length() - separator - (KGeoSeparatorLength * 2) )); |
898 aLandmark.SetPositionFieldL( EPositionFieldCountryCode, |
|
899 locationText->Right( locationText->Length() |
|
900 - separator - ( KGeoSeparatorLength * 2 ) ) ); |
902 } |
901 } |
903 result = ETrue; |
902 result = ETrue; |
904 } |
903 } |
905 } |
904 } |
|
905 CleanupStack::PopAndDestroy( locationText ); |
906 return result; |
906 return result; |
907 } |
907 } |
908 |
908 |
909 // -------------------------------------------------------------------------- |
909 // -------------------------------------------------------------------------- |
910 // CPmapCmd::EditorAssignFromMapsL |
910 // CPmapCmd::EditorAssignFromMapsL |
966 CleanupClosePushL( textNumber ); |
966 CleanupClosePushL( textNumber ); |
967 geoData.CreateL( KGeoMaxSize ); |
967 geoData.CreateL( KGeoMaxSize ); |
968 textNumber.CreateL( KGeoMaxSize ); |
968 textNumber.CreateL( KGeoMaxSize ); |
969 TRealFormat format( KGeoFormatWidth ); |
969 TRealFormat format( KGeoFormatWidth ); |
970 textNumber.Num( latitude, format ); |
970 textNumber.Num( latitude, format ); |
|
971 |
|
972 TLocale localeFetcer; |
|
973 TChar currentDecimalSeparator; |
|
974 |
|
975 currentDecimalSeparator = localeFetcer.DecimalSeparator(); |
|
976 TInt descimalSepratorPos = textNumber.Locate( currentDecimalSeparator ); |
|
977 |
|
978 if( descimalSepratorPos != KErrNotFound ) |
|
979 { |
|
980 textNumber.Replace( descimalSepratorPos , 1 , KDecimalSepratorEnglish ); |
|
981 } |
|
982 |
|
983 |
971 geoData = textNumber; |
984 geoData = textNumber; |
972 geoData += KGeoSeparator(); |
985 geoData += KGeoSeparator(); |
973 textNumber.Num( longitude, format ); |
986 textNumber.Num( longitude, format ); |
974 geoData += textNumber; |
987 |
|
988 descimalSepratorPos = textNumber.Locate( currentDecimalSeparator ); |
|
989 |
|
990 if( descimalSepratorPos != KErrNotFound ) |
|
991 { |
|
992 textNumber.Replace( descimalSepratorPos , 1 , KDecimalSepratorEnglish ); |
|
993 } |
|
994 |
|
995 geoData += textNumber; |
975 |
996 |
976 if(aLandmark.IsPositionFieldAvailable( EPositionFieldCountryCode )) |
997 if(aLandmark.IsPositionFieldAvailable( EPositionFieldCountryCode )) |
977 { |
998 { |
978 TPtrC countryCode; |
999 TPtrC countryCode; |
979 aLandmark.GetPositionField(EPositionFieldCountryCode,countryCode); |
1000 aLandmark.GetPositionField(EPositionFieldCountryCode,countryCode); |
1430 EVPbkVersitSubFieldStreet, iAddressType ); |
1451 EVPbkVersitSubFieldStreet, iAddressType ); |
1431 UpdateFieldL( *result, EPositionFieldPostalCode, |
1452 UpdateFieldL( *result, EPositionFieldPostalCode, |
1432 EVPbkVersitSubFieldPostalCode, iAddressType ); |
1453 EVPbkVersitSubFieldPostalCode, iAddressType ); |
1433 UpdateFieldL( *result, EPositionFieldLocality, |
1454 UpdateFieldL( *result, EPositionFieldLocality, |
1434 EVPbkVersitSubFieldRegion, iAddressType ); |
1455 EVPbkVersitSubFieldRegion, iAddressType ); |
|
1456 UpdateFieldL( *result, EPositionFieldState, |
|
1457 EVPbkVersitSubFieldRegion, iAddressType ); |
1435 UpdateFieldL( *result, EPositionFieldNone, |
1458 UpdateFieldL( *result, EPositionFieldNone, |
1436 EVPbkVersitSubFieldPostOfficeAddress, iAddressType ); |
1459 EVPbkVersitSubFieldPostOfficeAddress, iAddressType ); |
1437 UpdateFieldL( *result, EPositionFieldNone, |
1460 UpdateFieldL( *result, EPositionFieldNone, |
1438 EVPbkVersitSubFieldExtendedAddress, iAddressType ); |
1461 EVPbkVersitSubFieldExtendedAddress, iAddressType ); |
1439 |
1462 |