26 #include <finditemmenu.rsg> |
26 #include <finditemmenu.rsg> |
27 #include <ConeResLoader.h> |
27 #include <ConeResLoader.h> |
28 |
28 |
29 #include <ItemFinder.h> |
29 #include <ItemFinder.h> |
30 |
30 |
31 #include <sendui.h> // for CSendAppUi |
|
32 #include <CMessageData.h> // for CMessageData |
|
33 |
|
34 #include <commonphoneparser.h> // Phonenumber parser |
31 #include <commonphoneparser.h> // Phonenumber parser |
35 #include <SendUiConsts.h> // Mtm uids |
|
36 |
32 |
37 #include <apgcli.h> // RApaLsSession for WMLBrowser launch |
33 #include <apgcli.h> // RApaLsSession for WMLBrowser launch |
38 #include <apgtask.h> |
34 #include <apgtask.h> |
39 |
35 |
40 #ifndef RD_VIRTUAL_PHONEBOOK |
36 #ifndef RD_VIRTUAL_PHONEBOOK |
207 { |
203 { |
208 iRPbkResourceFile->Close(); |
204 iRPbkResourceFile->Close(); |
209 } |
205 } |
210 delete iRPbkResourceFile; |
206 delete iRPbkResourceFile; |
211 #endif // !RD_VIRTUAL_PHONEBOOK |
207 #endif // !RD_VIRTUAL_PHONEBOOK |
212 delete iSendUi; |
208 |
213 delete iSenderDescriptor; |
209 delete iSenderDescriptor; |
214 |
210 |
215 delete iServiceHandler; |
211 delete iServiceHandler; |
216 |
212 |
217 delete iCommonUiRepositoryWatcher; |
213 delete iCommonUiRepositoryWatcher; |
901 CallL(); |
897 CallL(); |
902 break; |
898 break; |
903 } |
899 } |
904 case EFindItemSubMenuSend: |
900 case EFindItemSubMenuSend: |
905 { |
901 { |
906 TSendingCapabilities sendingCapabilities; |
|
907 sendingCapabilities.iFlags = TSendingCapabilities::ESupportsEditor; |
|
908 CArrayFixFlat<TUid>* mtmFilter = new(ELeave) CArrayFixFlat<TUid>( 1 ); |
|
909 CleanupStack::PushL(mtmFilter); |
|
910 CItemFinder::TItemType itemType = iAutomaticFind ? iAutomaticFind->CurrentItemExt().iItemType : CItemFinder::ENoneSelected; |
|
911 |
|
912 mtmFilter->AppendL(KSenduiMtmPostcardUid);// dim postcard |
|
913 // Hide SMS if not supported |
|
914 |
|
915 #ifndef RD_UNIFIED_EDITOR |
|
916 if ( !iEmailOverSmsFeatureSupported ) |
|
917 { |
|
918 mtmFilter->AppendL(KSenduiMtmSmsUid); |
|
919 } |
|
920 // Hide MMS if not supported |
|
921 if (!iMMSFeatureSupported) |
|
922 { |
|
923 mtmFilter->AppendL(KSenduiMtmMmsUid); |
|
924 } |
|
925 #endif |
|
926 |
|
927 // Hide E-Mail if nosupported or phonenumber |
|
928 if ( !iEmailUiFeatureSupported || itemType == CItemFinder::EPhoneNumber ) |
|
929 { |
|
930 mtmFilter->AppendL(KSenduiMtmSmtpUid); |
|
931 mtmFilter->AppendL(KSenduiMtmImap4Uid); |
|
932 mtmFilter->AppendL(KSenduiMtmPop3Uid); |
|
933 mtmFilter->AppendL(KSenduiMtmSyncMLEmailUid); |
|
934 } |
|
935 // Hide Audio if not supported or E-mail address |
|
936 if( !iAudioMessagingFeatureSupported || itemType == CItemFinder::EEmailAddress) |
|
937 { |
|
938 mtmFilter->AppendL(KSenduiMtmAudioMessageUid); |
|
939 } |
|
940 TUid uid = iSendUi->ShowTypedQueryL( CSendUi::EWriteMenu, NULL, sendingCapabilities, mtmFilter ); |
|
941 |
|
942 CleanupStack::PopAndDestroy(); |
|
943 if ( uid == KNullUid ) |
|
944 { |
|
945 break; |
|
946 } |
|
947 SendMessageL(uid); |
|
948 |
|
949 break; |
902 break; |
950 } |
903 } |
951 |
904 |
952 case EFindItemCmdGoToUrl: |
905 case EFindItemCmdGoToUrl: |
953 { |
906 { |
1132 NULL ); |
1085 NULL ); |
1133 } |
1086 } |
1134 |
1087 |
1135 void CFindItemMenu::SendMessageL( const TUid aMtmUid ) |
1088 void CFindItemMenu::SendMessageL( const TUid aMtmUid ) |
1136 { |
1089 { |
1137 HBufC* parsedAddress = 0; |
1090 |
1138 TBool isNumber = EFalse; |
|
1139 if ( iAutomaticFind && iAutomaticFind->CurrentItemExt().iItemType == CItemFinder::EEmailAddress ) |
|
1140 { |
|
1141 parsedAddress = iAutomaticFind->CurrentItemExt().iItemDescriptor; |
|
1142 } |
|
1143 else |
|
1144 { |
|
1145 // if sender descriptor is something else than phone number it will |
|
1146 // still go through this brach.. |
|
1147 TBool numberSelected = ( iAutomaticFind && iAutomaticFind->CurrentItemExt().iItemType == CItemFinder::EPhoneNumber ); |
|
1148 parsedAddress = ( numberSelected ? iAutomaticFind->CurrentItemExt().iItemDescriptor : iSenderDescriptor)->AllocLC(); |
|
1149 TPtr numberPtr = parsedAddress->Des(); |
|
1150 CommonPhoneParser::ParsePhoneNumber( numberPtr, CommonPhoneParser::EPlainPhoneNumber ); |
|
1151 AknTextUtils::ConvertDigitsTo( numberPtr, EDigitTypeWestern ); |
|
1152 isNumber = ETrue; |
|
1153 } |
|
1154 |
|
1155 CMessageData* messageData = CMessageData::NewL(); |
|
1156 CleanupStack::PushL( messageData ); |
|
1157 messageData->AppendToAddressL( parsedAddress->Des() ); |
|
1158 iSendUi->CreateAndSendMessageL( aMtmUid,messageData ); |
|
1159 CleanupStack::PopAndDestroy( isNumber ? 2 : 1 ); // messageData, number |
|
1160 } |
1091 } |
1161 |
1092 |
1162 void CFindItemMenu::GoToUrlL( TUid /*aHandlerAppUid*/ ) |
1093 void CFindItemMenu::GoToUrlL( TUid /*aHandlerAppUid*/ ) |
1163 { |
1094 { |
1164 // Scheme handler can handle this |
1095 // Scheme handler can handle this |
1353 iRPbkResourceFile = new (ELeave)RPbkViewResourceFile( *iCoeEnv ); |
1284 iRPbkResourceFile = new (ELeave)RPbkViewResourceFile( *iCoeEnv ); |
1354 iRPbkResourceFile->OpenL(); |
1285 iRPbkResourceFile->OpenL(); |
1355 iPbkEngine = CPbkContactEngine::NewL(); |
1286 iPbkEngine = CPbkContactEngine::NewL(); |
1356 iPbkDataSave = CPbkDataSaveAppUi::NewL( *iPbkEngine ); |
1287 iPbkDataSave = CPbkDataSaveAppUi::NewL( *iPbkEngine ); |
1357 #endif // !RD_VIRTUAL_PHONEBOOK |
1288 #endif // !RD_VIRTUAL_PHONEBOOK |
1358 iSendUi = CSendUi::NewL(); |
|
1359 |
1289 |
1360 TRAPD( ret, iCommonUiRepository = CRepository::NewL( KCRUidCommonUi ) ); |
1290 TRAPD( ret, iCommonUiRepository = CRepository::NewL( KCRUidCommonUi ) ); |
1361 if ( ret == KErrNone ) |
1291 if ( ret == KErrNone ) |
1362 { |
1292 { |
1363 iCommonUiRepositoryWatcher = CCommonUiRepositoryWatcher::NewL( |
1293 iCommonUiRepositoryWatcher = CCommonUiRepositoryWatcher::NewL( |