579 CleanupClosePushL( landmarks ); |
575 CleanupClosePushL( landmarks ); |
580 |
576 |
581 CPosLandmark* landmark = CPosLandmark::NewL(); |
577 CPosLandmark* landmark = CPosLandmark::NewL(); |
582 CleanupStack::PushL( landmark ); |
578 CleanupStack::PushL( landmark ); |
583 |
579 |
584 if ( !FillGeoLandmarkL( *landmark, aAddressType ) ) |
580 FillGeoLandmarkL( *landmark, aAddressType ); |
585 { |
581 FillLandmarkL( *landmark, aAddressType ); |
586 FillLandmarkL( *landmark, aAddressType ); |
582 SetLandmarkNameL(*landmark); |
587 } |
583 |
588 TLocality locality; |
584 TLocality locality; |
589 if ( landmark->NumOfAvailablePositionFields() > 0 |
585 if ( landmark->NumOfAvailablePositionFields() > 0 |
590 || landmark->GetPosition( locality ) == KErrNone ) |
586 || landmark->GetPosition( locality ) == KErrNone ) |
591 { |
587 { |
592 landmarks.AppendL( landmark ); |
588 landmarks.AppendL( landmark ); |
884 } |
880 } |
885 } |
881 } |
886 } |
882 } |
887 } |
883 } |
888 } |
884 } |
|
885 |
|
886 void CPmapCmd::SetLandmarkNameL(CPosLandmark& aLandmark) |
|
887 { |
|
888 _LIT(KComma, ","); |
|
889 _LIT(KSpace, " "); |
|
890 |
|
891 TInt length = 0; |
|
892 TPtrC street; |
|
893 if( aLandmark.IsPositionFieldAvailable( EPositionFieldStreet ) ) |
|
894 { |
|
895 aLandmark.GetPositionField( EPositionFieldStreet, street ); |
|
896 length += street.Length(); |
|
897 } |
|
898 |
|
899 TPtrC city; |
|
900 if( aLandmark.IsPositionFieldAvailable( EPositionFieldCity ) ) |
|
901 { |
|
902 aLandmark.GetPositionField( EPositionFieldCity, city ); |
|
903 if( length ) |
|
904 { |
|
905 length += KComma().Length() + KSpace().Length(); |
|
906 } |
|
907 length += city.Length(); |
|
908 } |
|
909 |
|
910 TPtrC country; |
|
911 if( aLandmark.IsPositionFieldAvailable( EPositionFieldCountry ) ) |
|
912 { |
|
913 aLandmark.GetPositionField( EPositionFieldCountry, country ); |
|
914 if( length ) |
|
915 { |
|
916 length += KComma().Length() + KSpace().Length(); |
|
917 } |
|
918 length += country.Length(); |
|
919 } |
|
920 |
|
921 RBuf newAddr; |
|
922 newAddr.CreateL( length ); |
|
923 CleanupClosePushL( newAddr ); |
|
924 |
|
925 if( street.Length() ) |
|
926 { |
|
927 newAddr += street; |
|
928 } |
|
929 |
|
930 if( city.Length() ) |
|
931 { |
|
932 if( newAddr.Length() > 0 ) |
|
933 { |
|
934 newAddr += KComma(); |
|
935 newAddr += KSpace(); |
|
936 } |
|
937 newAddr += city; |
|
938 } |
|
939 |
|
940 if( country.Length() ) |
|
941 { |
|
942 if( newAddr.Length() > 0 ) |
|
943 { |
|
944 newAddr += KComma(); |
|
945 newAddr += KSpace(); |
|
946 } |
|
947 newAddr += country; |
|
948 } |
|
949 if(length) |
|
950 aLandmark.SetLandmarkNameL(newAddr); |
|
951 |
|
952 CleanupStack::PopAndDestroy( &newAddr ); |
|
953 } |
889 |
954 |
890 // -------------------------------------------------------------------------- |
955 // -------------------------------------------------------------------------- |
891 // CPmapCmd::FillGeoLandmarkL |
956 // CPmapCmd::FillGeoLandmarkL |
892 // -------------------------------------------------------------------------- |
957 // -------------------------------------------------------------------------- |
893 // |
958 // |