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 |
31 #include <commonphoneparser.h> // Phonenumber parser |
34 #include <commonphoneparser.h> // Phonenumber parser |
|
35 #include <SendUiConsts.h> // Mtm uids |
|
36 |
|
37 #include <favouriteslimits.h> // KFavouritesMaxUrl |
|
38 #include <favouritesitem.h> // for CBookmarkItem |
|
39 |
|
40 #include <favouritesdb.h> |
32 |
41 |
33 #include <apgcli.h> // RApaLsSession for WMLBrowser launch |
42 #include <apgcli.h> // RApaLsSession for WMLBrowser launch |
34 #include <apgtask.h> |
43 #include <apgtask.h> |
35 |
44 |
36 #ifndef RD_VIRTUAL_PHONEBOOK |
45 #ifndef RD_VIRTUAL_PHONEBOOK |
42 #include <AiwServiceHandler.h> // CAiwServiceHandler |
51 #include <AiwServiceHandler.h> // CAiwServiceHandler |
43 #include <AiwContactAssignDataTypes.h> // AiwContactAssign |
52 #include <AiwContactAssignDataTypes.h> // AiwContactAssign |
44 #endif // !RD_VIRTUAL_PHONEBOOK |
53 #endif // !RD_VIRTUAL_PHONEBOOK |
45 |
54 |
46 #include "finditem.hrh" |
55 #include "finditem.hrh" |
47 #include <FindItemui.rsg> |
56 #include <finditemui.rsg> |
48 #include <aknnotewrappers.h> |
57 #include <aknnotewrappers.h> |
|
58 |
|
59 // add to gallery related |
|
60 #include <AknCommonDialogs.h> |
49 |
61 |
50 #include <featmgr.h> |
62 #include <featmgr.h> |
51 |
63 |
52 #include <centralrepository.h> |
64 #include <centralrepository.h> |
53 #include <CommonUiInternalCRKeys.h> |
65 #include <CommonUiInternalCRKeys.h> |
54 |
66 |
55 #include <AiwCommon.hrh> |
67 #include <AiwCommon.hrh> |
|
68 #include <schemehandler.h> |
56 |
69 |
57 // Callback query |
70 // Callback query |
58 #include <aknlists.h> |
71 #include <aknlists.h> |
59 #include <aknPopup.h> |
72 #include <aknPopup.h> |
60 #include <StringLoader.h> |
73 #include <StringLoader.h> |
203 { |
216 { |
204 iRPbkResourceFile->Close(); |
217 iRPbkResourceFile->Close(); |
205 } |
218 } |
206 delete iRPbkResourceFile; |
219 delete iRPbkResourceFile; |
207 #endif // !RD_VIRTUAL_PHONEBOOK |
220 #endif // !RD_VIRTUAL_PHONEBOOK |
208 |
221 delete iSendUi; |
209 delete iSenderDescriptor; |
222 delete iSenderDescriptor; |
210 |
223 |
211 delete iServiceHandler; |
224 delete iServiceHandler; |
212 |
225 |
213 delete iCommonUiRepositoryWatcher; |
226 delete iCommonUiRepositoryWatcher; |
214 delete iCommonUiRepository; |
227 delete iCommonUiRepository; |
215 |
228 |
216 |
229 |
217 delete iCallbackNumber; |
230 delete iCallbackNumber; |
|
231 delete iSchemeHandler; |
218 |
232 |
219 delete iDialData; |
233 delete iDialData; |
220 |
234 |
221 delete iSenderDisplayText; |
235 delete iSenderDisplayText; |
222 } |
236 } |
607 ( iIsContextMenu ? EFindItemContextMenuPlaceHolder : index ), |
621 ( iIsContextMenu ? EFindItemContextMenuPlaceHolder : index ), |
608 0, |
622 0, |
609 tempBuf); |
623 tempBuf); |
610 index = EFindItemCmdGoToUrl; |
624 index = EFindItemCmdGoToUrl; |
611 |
625 |
612 if ( !iIsContextMenu ) |
626 // Add bookmark |
613 { |
627 iCoeEnv->ReadResourceL( |
614 // Add bookmark |
628 tempBuf, R_FINDITEMMENU_ADD_BOOKMARK ); |
615 iCoeEnv->ReadResourceL( |
629 AddMenuItemL( |
616 tempBuf, R_FINDITEMMENU_ADD_BOOKMARK ); |
630 *iMenuPane, |
617 AddMenuItemL( |
631 EFindItemCmdAddToBookmark, |
618 *iMenuPane, |
632 index, |
619 EFindItemCmdAddToBookmark, |
633 0, |
620 index, |
634 tempBuf ); |
621 0, |
635 index = EFindItemCmdAddToBookmark; |
622 tempBuf ); |
636 |
623 index = EFindItemCmdAddToBookmark; |
|
624 } |
|
625 } |
637 } |
626 else |
638 else |
627 { |
639 { |
628 AddMenuItemL( |
640 AddMenuItemL( |
629 *iMenuPane, |
641 *iMenuPane, |
631 ( iIsContextMenu ? EFindItemContextMenuPlaceHolder : index ), |
643 ( iIsContextMenu ? EFindItemContextMenuPlaceHolder : index ), |
632 0, |
644 0, |
633 tempBuf ); |
645 tempBuf ); |
634 index = EFindItemCmdGoToRstp; |
646 index = EFindItemCmdGoToRstp; |
635 |
647 |
636 if ( !iIsContextMenu ) |
648 iCoeEnv->ReadResourceL( |
637 { |
649 tempBuf, R_FINDITEMMENU_ADD_TO_GALLERY ); |
638 iCoeEnv->ReadResourceL( |
650 AddMenuItemL( |
639 tempBuf, R_FINDITEMMENU_ADD_TO_GALLERY ); |
651 *iMenuPane, |
640 AddMenuItemL( |
652 EFindItemCmdAddToGallery, |
641 *iMenuPane, |
653 index, |
642 EFindItemCmdAddToGallery, |
654 0, |
643 index, |
655 tempBuf ); |
644 0, |
656 index = EFindItemCmdAddToGallery; |
645 tempBuf ); |
657 |
646 index = EFindItemCmdAddToGallery; |
|
647 } |
|
648 } |
658 } |
649 break; |
659 break; |
650 } |
660 } |
651 case CItemFinder::EEmailAddress: |
661 case CItemFinder::EEmailAddress: |
652 { |
662 { |
826 |
836 |
827 } |
837 } |
828 |
838 |
829 // Add to contacts |
839 // Add to contacts |
830 if ( ( itemType != CItemFinder::EUriScheme ) && |
840 if ( ( itemType != CItemFinder::EUriScheme ) && |
831 !( itemType == CItemFinder::EUrlAddress && |
|
832 iIsContextMenu ) && |
|
833 ( ( ( ( !iIsSenderKnown && |
841 ( ( ( ( !iIsSenderKnown && |
834 iSenderDescriptor->Length() ) || |
842 iSenderDescriptor->Length() ) || |
835 iCallbackNumber ) && |
843 iCallbackNumber ) && |
836 itemType == CItemFinder::ENoneSelected ) || |
844 itemType == CItemFinder::ENoneSelected ) || |
837 itemType != CItemFinder::ENoneSelected ) ) |
845 itemType != CItemFinder::ENoneSelected ) ) |
877 // profiles there must be Internet call command in call submenu. |
885 // profiles there must be Internet call command in call submenu. |
878 TInt dummy = 0; |
886 TInt dummy = 0; |
879 if ( ( !iHideCallMenu || |
887 if ( ( !iHideCallMenu || |
880 ( iFindItemVoIPExtension->IsVoIPSupported() && |
888 ( iFindItemVoIPExtension->IsVoIPSupported() && |
881 iFindItemVoIPExtension->VoIPProfilesExistL() ) ) && |
889 iFindItemVoIPExtension->VoIPProfilesExistL() ) ) && |
882 iMenuPane->MenuItemExists( EFindItemCmdCall, dummy ) ) |
890 iMenuPane->MenuItemExists( EFindItemCmdCall, dummy ) && |
|
891 !iHideCallSubMenu ) |
883 { |
892 { |
884 iMenuPane->SetItemDimmed( EFindItemCmdCall, ETrue ); |
893 iMenuPane->SetItemDimmed( EFindItemCmdCall, ETrue ); |
885 iMenuPane->AddMenuItemsL( |
894 iMenuPane->AddMenuItemsL( |
886 R_FINDMENU_CALLUI_AIW_ITEM, |
895 R_FINDMENU_CALLUI_AIW_ITEM, |
887 EFindItemCmdCall ); |
896 EFindItemCmdCall ); |
888 } |
897 } |
889 } |
898 } |
890 |
899 |
|
900 |
|
901 // ----------------------------------------------------------------------------- |
|
902 // CFindItemMenu::SetCallSubMenuVisibility |
|
903 // Sets AIW submenu visibility |
|
904 // ----------------------------------------------------------------------------- |
|
905 // |
|
906 EXPORT_C void CFindItemMenu::SetCallSubMenuVisibility( TBool aVisible ) |
|
907 { |
|
908 iHideCallSubMenu = !aVisible; |
|
909 } |
|
910 |
|
911 |
891 EXPORT_C void CFindItemMenu::HandleItemFinderCommandL( TInt aCommand ) |
912 EXPORT_C void CFindItemMenu::HandleItemFinderCommandL( TInt aCommand ) |
892 { |
913 { |
893 switch ( aCommand ) |
914 switch ( aCommand ) |
894 { |
915 { |
895 case EFindItemCmdCall: |
916 case EFindItemCmdCall: |
897 CallL(); |
918 CallL(); |
898 break; |
919 break; |
899 } |
920 } |
900 case EFindItemSubMenuSend: |
921 case EFindItemSubMenuSend: |
901 { |
922 { |
|
923 TSendingCapabilities sendingCapabilities; |
|
924 sendingCapabilities.iFlags = TSendingCapabilities::ESupportsEditor; |
|
925 CArrayFixFlat<TUid>* mtmFilter = new(ELeave) CArrayFixFlat<TUid>( 1 ); |
|
926 CleanupStack::PushL(mtmFilter); |
|
927 CItemFinder::TItemType itemType = iAutomaticFind ? iAutomaticFind->CurrentItemExt().iItemType : CItemFinder::ENoneSelected; |
|
928 |
|
929 mtmFilter->AppendL(KSenduiMtmPostcardUid);// dim postcard |
|
930 // Hide SMS if not supported |
|
931 |
|
932 #ifndef RD_UNIFIED_EDITOR |
|
933 if ( !iEmailOverSmsFeatureSupported ) |
|
934 { |
|
935 mtmFilter->AppendL(KSenduiMtmSmsUid); |
|
936 } |
|
937 // Hide MMS if not supported |
|
938 if (!iMMSFeatureSupported) |
|
939 { |
|
940 mtmFilter->AppendL(KSenduiMtmMmsUid); |
|
941 } |
|
942 #endif |
|
943 |
|
944 // Hide E-Mail if nosupported or phonenumber |
|
945 if ( !iEmailUiFeatureSupported || itemType == CItemFinder::EPhoneNumber ) |
|
946 { |
|
947 mtmFilter->AppendL(KSenduiMtmSmtpUid); |
|
948 mtmFilter->AppendL(KSenduiMtmImap4Uid); |
|
949 mtmFilter->AppendL(KSenduiMtmPop3Uid); |
|
950 mtmFilter->AppendL(KSenduiMtmSyncMLEmailUid); |
|
951 } |
|
952 // Hide Audio if not supported or E-mail address |
|
953 if( !iAudioMessagingFeatureSupported || itemType == CItemFinder::EEmailAddress) |
|
954 { |
|
955 mtmFilter->AppendL(KSenduiMtmAudioMessageUid); |
|
956 } |
|
957 TUid uid = iSendUi->ShowTypedQueryL( CSendUi::EWriteMenu, NULL, sendingCapabilities, mtmFilter ); |
|
958 |
|
959 CleanupStack::PopAndDestroy(); |
|
960 if ( uid == KNullUid ) |
|
961 { |
|
962 break; |
|
963 } |
|
964 SendMessageL(uid); |
|
965 |
902 break; |
966 break; |
903 } |
967 } |
904 |
968 |
905 case EFindItemCmdGoToUrl: |
969 case EFindItemCmdGoToUrl: |
906 { |
970 { |
907 |
971 LaunchGenericUriL(); |
908 break; |
972 break; |
909 } |
973 } |
910 case EFindItemCmdGoToRstp: |
974 case EFindItemCmdGoToRstp: |
911 { |
975 { |
912 |
976 LaunchGenericUriL(); |
913 break; |
977 break; |
914 } |
978 } |
915 |
979 |
916 case EFindItemCmdAddToBookmark: |
980 case EFindItemCmdAddToBookmark: |
917 { |
981 { |
1085 NULL ); |
1150 NULL ); |
1086 } |
1151 } |
1087 |
1152 |
1088 void CFindItemMenu::SendMessageL( const TUid aMtmUid ) |
1153 void CFindItemMenu::SendMessageL( const TUid aMtmUid ) |
1089 { |
1154 { |
1090 |
1155 HBufC* parsedAddress = 0; |
|
1156 TBool isNumber = EFalse; |
|
1157 if ( iAutomaticFind && iAutomaticFind->CurrentItemExt().iItemType == CItemFinder::EEmailAddress ) |
|
1158 { |
|
1159 parsedAddress = iAutomaticFind->CurrentItemExt().iItemDescriptor; |
|
1160 } |
|
1161 else |
|
1162 { |
|
1163 // if sender descriptor is something else than phone number it will |
|
1164 // still go through this brach.. |
|
1165 TBool numberSelected = ( iAutomaticFind && iAutomaticFind->CurrentItemExt().iItemType == CItemFinder::EPhoneNumber ); |
|
1166 parsedAddress = ( numberSelected ? iAutomaticFind->CurrentItemExt().iItemDescriptor : iSenderDescriptor)->AllocLC(); |
|
1167 TPtr numberPtr = parsedAddress->Des(); |
|
1168 CommonPhoneParser::ParsePhoneNumber( numberPtr, CommonPhoneParser::EPlainPhoneNumber ); |
|
1169 AknTextUtils::ConvertDigitsTo( numberPtr, EDigitTypeWestern ); |
|
1170 isNumber = ETrue; |
|
1171 } |
|
1172 |
|
1173 CMessageData* messageData = CMessageData::NewL(); |
|
1174 CleanupStack::PushL( messageData ); |
|
1175 messageData->AppendToAddressL( parsedAddress->Des() ); |
|
1176 iSendUi->CreateAndSendMessageL( aMtmUid,messageData ); |
|
1177 CleanupStack::PopAndDestroy( isNumber ? 2 : 1 ); // messageData, number |
1091 } |
1178 } |
1092 |
1179 |
1093 void CFindItemMenu::GoToUrlL( TUid /*aHandlerAppUid*/ ) |
1180 void CFindItemMenu::GoToUrlL( TUid /*aHandlerAppUid*/ ) |
1094 { |
1181 { |
1095 // Scheme handler can handle this |
1182 // Scheme handler can handle this |
1096 } |
1183 } |
1097 |
1184 |
1098 void CFindItemMenu::AddToBookmarkL() |
1185 void CFindItemMenu::AddToBookmarkL() |
1099 { |
1186 { |
|
1187 // Create an item |
|
1188 CFavouritesItem* item = CFavouritesItem::NewLC(); |
|
1189 item->SetParentFolder( KFavouritesRootUid ); |
|
1190 item->SetType( CFavouritesItem::EItem ); |
1100 // Read default name from resources |
1191 // Read default name from resources |
1101 RConeResourceLoader ldr( *iCoeEnv ); |
1192 RConeResourceLoader ldr( *iCoeEnv ); |
1102 |
1193 |
1103 TFileName dialogResource( KDialogResourceName ); |
1194 TFileName dialogResource( KDialogResourceName ); |
1104 |
1195 |
1116 CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( retName ); |
1207 CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( retName ); |
1117 dlg->SetMaxLength( KMaxBookmarkNameLength ); |
1208 dlg->SetMaxLength( KMaxBookmarkNameLength ); |
1118 if ( !dlg->ExecuteLD( R_FINDITEM_BOOKMARK_QUERY_DIALOG ) ) |
1209 if ( !dlg->ExecuteLD( R_FINDITEM_BOOKMARK_QUERY_DIALOG ) ) |
1119 { |
1210 { |
1120 // User press cancel - do not add bookmark |
1211 // User press cancel - do not add bookmark |
1121 CleanupStack::PopAndDestroy( 2 ); // defaultName, resourceLoader |
1212 CleanupStack::PopAndDestroy( 3 ); // item, defaultName, resourceLoader |
1122 return; |
1213 return; |
1123 } |
1214 } |
|
1215 |
|
1216 item->SetNameL( retName ); |
|
1217 item->SetUrlL( iAutomaticFind->CurrentItemExt().iItemDescriptor->Des() ); |
|
1218 |
|
1219 RFavouritesSession sess; |
|
1220 RFavouritesDb db; |
|
1221 |
|
1222 User::LeaveIfError( sess.Connect() ); |
|
1223 CleanupClosePushL<RFavouritesSession>( sess ); |
|
1224 User::LeaveIfError( db.Open( sess, KBrowserBookmarks ) ); |
|
1225 CleanupClosePushL<RFavouritesDb>( db ); |
|
1226 |
|
1227 // add item |
|
1228 db.Add( *item, ETrue ); |
|
1229 // Close the database. |
|
1230 db.Close(); |
1124 |
1231 |
1125 HBufC* msgBuffer = iCoeEnv->AllocReadResourceLC( R_FINDITEM_BOOKMARK_SAVED ); |
1232 HBufC* msgBuffer = iCoeEnv->AllocReadResourceLC( R_FINDITEM_BOOKMARK_SAVED ); |
1126 CAknConfirmationNote* note = new (ELeave)CAknConfirmationNote( ETrue ); |
1233 CAknConfirmationNote* note = new (ELeave)CAknConfirmationNote( ETrue ); |
1127 note->ExecuteLD( *msgBuffer ); |
1234 note->ExecuteLD( *msgBuffer ); |
1128 |
1235 |
1129 CleanupStack::PopAndDestroy( 3 ); // resourceLoader, |
1236 CleanupStack::PopAndDestroy( 6 ); // item, db, sess, resourceLoader, |
1130 // defaultName, msgBuffer |
1237 // defaultName, msgBuffer |
1131 } |
1238 } |
1132 |
1239 |
1133 void CFindItemMenu::CreateContactCardL( TInt aCommandId ) |
1240 void CFindItemMenu::CreateContactCardL( TInt aCommandId ) |
1134 { |
1241 { |
1263 #endif // !RD_VIRTUAL_PHONEBOOK |
1370 #endif // !RD_VIRTUAL_PHONEBOOK |
1264 } |
1371 } |
1265 |
1372 |
1266 void CFindItemMenu::AddToGalleryL() |
1373 void CFindItemMenu::AddToGalleryL() |
1267 { |
1374 { |
1268 //no need to do anything ,due to the remove of AknCommonDialogs |
1375 _LIT( KRamFileExtension,".ram" ); |
|
1376 TFileName fileName; |
|
1377 iCoeEnv->ReadResourceL( fileName, R_FINDITEMMENU_DEFAULT_GALL_NAME ); |
|
1378 fileName.Append( KRamFileExtension ); |
|
1379 if ( AknCommonDialogs::RunSaveDlgLD( |
|
1380 fileName, R_MEMORY_SELECTION_LOCATIONS ) ) |
|
1381 { |
|
1382 CDesCArrayFlat* array = new (ELeave)CDesCArrayFlat( 1 ); |
|
1383 CleanupStack::PushL( array ); |
|
1384 array->AppendL( iAutomaticFind->CurrentItemExt().iItemDescriptor->Des() ); |
|
1385 TInt err = KErrNone; |
|
1386 if( !iMPEngineDllLoaded ) |
|
1387 { |
|
1388 LoadMPEngineApiL(); |
|
1389 } |
|
1390 err = iMPEngineApi->CreateNewLinkFileL( fileName, array, ETrue ); |
|
1391 CleanupStack::PopAndDestroy( 1 ); |
|
1392 |
|
1393 if ( err == KErrNone ) |
|
1394 { |
|
1395 // Show note |
|
1396 HBufC* msgBuffer = |
|
1397 iCoeEnv->AllocReadResourceLC( R_FINDITEMMENU_LINK_SAVED ); |
|
1398 CAknConfirmationNote* note = |
|
1399 new (ELeave) CAknConfirmationNote( ETrue ); |
|
1400 note->ExecuteLD( *msgBuffer ); |
|
1401 CleanupStack::PopAndDestroy(); // msgBuffer |
|
1402 } |
|
1403 } |
1269 } |
1404 } |
1270 |
1405 |
1271 EXPORT_C void CFindItemMenu::SetSenderDescriptorType( |
1406 EXPORT_C void CFindItemMenu::SetSenderDescriptorType( |
1272 CItemFinder::TItemType aType ) |
1407 CItemFinder::TItemType aType ) |
1273 { |
1408 { |
1284 iRPbkResourceFile = new (ELeave)RPbkViewResourceFile( *iCoeEnv ); |
1419 iRPbkResourceFile = new (ELeave)RPbkViewResourceFile( *iCoeEnv ); |
1285 iRPbkResourceFile->OpenL(); |
1420 iRPbkResourceFile->OpenL(); |
1286 iPbkEngine = CPbkContactEngine::NewL(); |
1421 iPbkEngine = CPbkContactEngine::NewL(); |
1287 iPbkDataSave = CPbkDataSaveAppUi::NewL( *iPbkEngine ); |
1422 iPbkDataSave = CPbkDataSaveAppUi::NewL( *iPbkEngine ); |
1288 #endif // !RD_VIRTUAL_PHONEBOOK |
1423 #endif // !RD_VIRTUAL_PHONEBOOK |
|
1424 iSendUi = CSendUi::NewL(); |
1289 |
1425 |
1290 TRAPD( ret, iCommonUiRepository = CRepository::NewL( KCRUidCommonUi ) ); |
1426 TRAPD( ret, iCommonUiRepository = CRepository::NewL( KCRUidCommonUi ) ); |
1291 if ( ret == KErrNone ) |
1427 if ( ret == KErrNone ) |
1292 { |
1428 { |
1293 iCommonUiRepositoryWatcher = CCommonUiRepositoryWatcher::NewL( |
1429 iCommonUiRepositoryWatcher = CCommonUiRepositoryWatcher::NewL( |
1433 return ETrue; |
1569 return ETrue; |
1434 } |
1570 } |
1435 |
1571 |
1436 void CFindItemMenu::LaunchGenericUriL() |
1572 void CFindItemMenu::LaunchGenericUriL() |
1437 { |
1573 { |
1438 |
1574 if ( iSchemeHandler ) |
|
1575 { |
|
1576 delete iSchemeHandler; |
|
1577 iSchemeHandler = 0; |
|
1578 } |
|
1579 iSchemeHandler = CSchemeHandler::NewL( iAutomaticFind->CurrentItemExt().iItemDescriptor->Des() ); |
|
1580 if ( iAutomaticFind->CurrentItemExt().iItemDescriptor->FindF( KRtspUrlAddress ) != KErrNotFound ) |
|
1581 { |
|
1582 iSchemeHandler->HandleUrlEmbeddedL(); |
|
1583 } |
|
1584 else |
|
1585 { |
|
1586 iSchemeHandler->HandleUrlStandaloneL(); |
|
1587 } |
1439 } |
1588 } |
1440 |
1589 |
1441 EXPORT_C void CFindItemMenu::SetCallbackNumber( const TDesC& aPhoneNumber ) |
1590 EXPORT_C void CFindItemMenu::SetCallbackNumber( const TDesC& aPhoneNumber ) |
1442 { |
1591 { |
1443 delete iCallbackNumber; |
1592 delete iCallbackNumber; |