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 |
|
37 #include <favouriteslimits.h> // KFavouritesMaxUrl |
|
38 #include <favouritesitem.h> // for CBookmarkItem |
|
39 |
|
40 #include <favouritesdb.h> |
|
41 |
32 |
42 #include <apgcli.h> // RApaLsSession for WMLBrowser launch |
33 #include <apgcli.h> // RApaLsSession for WMLBrowser launch |
43 #include <apgtask.h> |
34 #include <apgtask.h> |
44 |
35 |
45 #ifndef RD_VIRTUAL_PHONEBOOK |
36 #ifndef RD_VIRTUAL_PHONEBOOK |
51 #include <AiwServiceHandler.h> // CAiwServiceHandler |
42 #include <AiwServiceHandler.h> // CAiwServiceHandler |
52 #include <AiwContactAssignDataTypes.h> // AiwContactAssign |
43 #include <AiwContactAssignDataTypes.h> // AiwContactAssign |
53 #endif // !RD_VIRTUAL_PHONEBOOK |
44 #endif // !RD_VIRTUAL_PHONEBOOK |
54 |
45 |
55 #include "finditem.hrh" |
46 #include "finditem.hrh" |
56 #include <finditemui.rsg> |
47 #include <FindItemui.rsg> |
57 #include <aknnotewrappers.h> |
48 #include <aknnotewrappers.h> |
58 |
|
59 // add to gallery related |
|
60 #include <AknCommonDialogs.h> |
|
61 |
49 |
62 #include <featmgr.h> |
50 #include <featmgr.h> |
63 |
51 |
64 #include <centralrepository.h> |
52 #include <centralrepository.h> |
65 #include <CommonUiInternalCRKeys.h> |
53 #include <CommonUiInternalCRKeys.h> |
66 |
54 |
67 #include <AiwCommon.hrh> |
55 #include <AiwCommon.hrh> |
68 #include <schemehandler.h> |
|
69 |
56 |
70 // Callback query |
57 // Callback query |
71 #include <aknlists.h> |
58 #include <aknlists.h> |
72 #include <aknPopup.h> |
59 #include <aknPopup.h> |
73 #include <StringLoader.h> |
60 #include <StringLoader.h> |
216 { |
203 { |
217 iRPbkResourceFile->Close(); |
204 iRPbkResourceFile->Close(); |
218 } |
205 } |
219 delete iRPbkResourceFile; |
206 delete iRPbkResourceFile; |
220 #endif // !RD_VIRTUAL_PHONEBOOK |
207 #endif // !RD_VIRTUAL_PHONEBOOK |
221 delete iSendUi; |
208 |
222 delete iSenderDescriptor; |
209 delete iSenderDescriptor; |
223 |
210 |
224 delete iServiceHandler; |
211 delete iServiceHandler; |
225 |
212 |
226 delete iCommonUiRepositoryWatcher; |
213 delete iCommonUiRepositoryWatcher; |
227 delete iCommonUiRepository; |
214 delete iCommonUiRepository; |
228 |
215 |
229 |
216 |
230 delete iCallbackNumber; |
217 delete iCallbackNumber; |
231 delete iSchemeHandler; |
|
232 |
218 |
233 delete iDialData; |
219 delete iDialData; |
234 |
220 |
235 delete iSenderDisplayText; |
221 delete iSenderDisplayText; |
236 } |
222 } |
621 ( iIsContextMenu ? EFindItemContextMenuPlaceHolder : index ), |
607 ( iIsContextMenu ? EFindItemContextMenuPlaceHolder : index ), |
622 0, |
608 0, |
623 tempBuf); |
609 tempBuf); |
624 index = EFindItemCmdGoToUrl; |
610 index = EFindItemCmdGoToUrl; |
625 |
611 |
626 // Add bookmark |
612 if ( !iIsContextMenu ) |
627 iCoeEnv->ReadResourceL( |
613 { |
628 tempBuf, R_FINDITEMMENU_ADD_BOOKMARK ); |
614 // Add bookmark |
629 AddMenuItemL( |
615 iCoeEnv->ReadResourceL( |
630 *iMenuPane, |
616 tempBuf, R_FINDITEMMENU_ADD_BOOKMARK ); |
631 EFindItemCmdAddToBookmark, |
617 AddMenuItemL( |
632 index, |
618 *iMenuPane, |
633 0, |
619 EFindItemCmdAddToBookmark, |
634 tempBuf ); |
620 index, |
635 index = EFindItemCmdAddToBookmark; |
621 0, |
636 |
622 tempBuf ); |
|
623 index = EFindItemCmdAddToBookmark; |
|
624 } |
637 } |
625 } |
638 else |
626 else |
639 { |
627 { |
640 AddMenuItemL( |
628 AddMenuItemL( |
641 *iMenuPane, |
629 *iMenuPane, |
643 ( iIsContextMenu ? EFindItemContextMenuPlaceHolder : index ), |
631 ( iIsContextMenu ? EFindItemContextMenuPlaceHolder : index ), |
644 0, |
632 0, |
645 tempBuf ); |
633 tempBuf ); |
646 index = EFindItemCmdGoToRstp; |
634 index = EFindItemCmdGoToRstp; |
647 |
635 |
648 iCoeEnv->ReadResourceL( |
636 if ( !iIsContextMenu ) |
649 tempBuf, R_FINDITEMMENU_ADD_TO_GALLERY ); |
637 { |
650 AddMenuItemL( |
638 iCoeEnv->ReadResourceL( |
651 *iMenuPane, |
639 tempBuf, R_FINDITEMMENU_ADD_TO_GALLERY ); |
652 EFindItemCmdAddToGallery, |
640 AddMenuItemL( |
653 index, |
641 *iMenuPane, |
654 0, |
642 EFindItemCmdAddToGallery, |
655 tempBuf ); |
643 index, |
656 index = EFindItemCmdAddToGallery; |
644 0, |
657 |
645 tempBuf ); |
|
646 index = EFindItemCmdAddToGallery; |
|
647 } |
658 } |
648 } |
659 break; |
649 break; |
660 } |
650 } |
661 case CItemFinder::EEmailAddress: |
651 case CItemFinder::EEmailAddress: |
662 { |
652 { |
836 |
826 |
837 } |
827 } |
838 |
828 |
839 // Add to contacts |
829 // Add to contacts |
840 if ( ( itemType != CItemFinder::EUriScheme ) && |
830 if ( ( itemType != CItemFinder::EUriScheme ) && |
|
831 !( itemType == CItemFinder::EUrlAddress && |
|
832 iIsContextMenu ) && |
841 ( ( ( ( !iIsSenderKnown && |
833 ( ( ( ( !iIsSenderKnown && |
842 iSenderDescriptor->Length() ) || |
834 iSenderDescriptor->Length() ) || |
843 iCallbackNumber ) && |
835 iCallbackNumber ) && |
844 itemType == CItemFinder::ENoneSelected ) || |
836 itemType == CItemFinder::ENoneSelected ) || |
845 itemType != CItemFinder::ENoneSelected ) ) |
837 itemType != CItemFinder::ENoneSelected ) ) |
885 // profiles there must be Internet call command in call submenu. |
877 // profiles there must be Internet call command in call submenu. |
886 TInt dummy = 0; |
878 TInt dummy = 0; |
887 if ( ( !iHideCallMenu || |
879 if ( ( !iHideCallMenu || |
888 ( iFindItemVoIPExtension->IsVoIPSupported() && |
880 ( iFindItemVoIPExtension->IsVoIPSupported() && |
889 iFindItemVoIPExtension->VoIPProfilesExistL() ) ) && |
881 iFindItemVoIPExtension->VoIPProfilesExistL() ) ) && |
890 iMenuPane->MenuItemExists( EFindItemCmdCall, dummy ) && |
882 iMenuPane->MenuItemExists( EFindItemCmdCall, dummy ) ) |
891 !iHideCallSubMenu ) |
|
892 { |
883 { |
893 iMenuPane->SetItemDimmed( EFindItemCmdCall, ETrue ); |
884 iMenuPane->SetItemDimmed( EFindItemCmdCall, ETrue ); |
894 iMenuPane->AddMenuItemsL( |
885 iMenuPane->AddMenuItemsL( |
895 R_FINDMENU_CALLUI_AIW_ITEM, |
886 R_FINDMENU_CALLUI_AIW_ITEM, |
896 EFindItemCmdCall ); |
887 EFindItemCmdCall ); |
897 } |
888 } |
898 } |
889 } |
899 |
890 |
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 |
|
912 EXPORT_C void CFindItemMenu::HandleItemFinderCommandL( TInt aCommand ) |
891 EXPORT_C void CFindItemMenu::HandleItemFinderCommandL( TInt aCommand ) |
913 { |
892 { |
914 switch ( aCommand ) |
893 switch ( aCommand ) |
915 { |
894 { |
916 case EFindItemCmdCall: |
895 case EFindItemCmdCall: |
918 CallL(); |
897 CallL(); |
919 break; |
898 break; |
920 } |
899 } |
921 case EFindItemSubMenuSend: |
900 case EFindItemSubMenuSend: |
922 { |
901 { |
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 |
|
966 break; |
902 break; |
967 } |
903 } |
968 |
904 |
969 case EFindItemCmdGoToUrl: |
905 case EFindItemCmdGoToUrl: |
970 { |
906 { |
971 LaunchGenericUriL(); |
907 |
972 break; |
908 break; |
973 } |
909 } |
974 case EFindItemCmdGoToRstp: |
910 case EFindItemCmdGoToRstp: |
975 { |
911 { |
976 LaunchGenericUriL(); |
912 |
977 break; |
913 break; |
978 } |
914 } |
979 |
915 |
980 case EFindItemCmdAddToBookmark: |
916 case EFindItemCmdAddToBookmark: |
981 { |
917 { |
1150 NULL ); |
1085 NULL ); |
1151 } |
1086 } |
1152 |
1087 |
1153 void CFindItemMenu::SendMessageL( const TUid aMtmUid ) |
1088 void CFindItemMenu::SendMessageL( const TUid aMtmUid ) |
1154 { |
1089 { |
1155 HBufC* parsedAddress = 0; |
1090 |
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 |
|
1178 } |
1091 } |
1179 |
1092 |
1180 void CFindItemMenu::GoToUrlL( TUid /*aHandlerAppUid*/ ) |
1093 void CFindItemMenu::GoToUrlL( TUid /*aHandlerAppUid*/ ) |
1181 { |
1094 { |
1182 // Scheme handler can handle this |
1095 // Scheme handler can handle this |
1183 } |
1096 } |
1184 |
1097 |
1185 void CFindItemMenu::AddToBookmarkL() |
1098 void CFindItemMenu::AddToBookmarkL() |
1186 { |
1099 { |
1187 // Create an item |
|
1188 CFavouritesItem* item = CFavouritesItem::NewLC(); |
|
1189 item->SetParentFolder( KFavouritesRootUid ); |
|
1190 item->SetType( CFavouritesItem::EItem ); |
|
1191 // Read default name from resources |
1100 // Read default name from resources |
1192 RConeResourceLoader ldr( *iCoeEnv ); |
1101 RConeResourceLoader ldr( *iCoeEnv ); |
1193 |
1102 |
1194 TFileName dialogResource( KDialogResourceName ); |
1103 TFileName dialogResource( KDialogResourceName ); |
1195 |
1104 |
1207 CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( retName ); |
1116 CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( retName ); |
1208 dlg->SetMaxLength( KMaxBookmarkNameLength ); |
1117 dlg->SetMaxLength( KMaxBookmarkNameLength ); |
1209 if ( !dlg->ExecuteLD( R_FINDITEM_BOOKMARK_QUERY_DIALOG ) ) |
1118 if ( !dlg->ExecuteLD( R_FINDITEM_BOOKMARK_QUERY_DIALOG ) ) |
1210 { |
1119 { |
1211 // User press cancel - do not add bookmark |
1120 // User press cancel - do not add bookmark |
1212 CleanupStack::PopAndDestroy( 3 ); // item, defaultName, resourceLoader |
1121 CleanupStack::PopAndDestroy( 2 ); // defaultName, resourceLoader |
1213 return; |
1122 return; |
1214 } |
1123 } |
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(); |
|
1231 |
1124 |
1232 HBufC* msgBuffer = iCoeEnv->AllocReadResourceLC( R_FINDITEM_BOOKMARK_SAVED ); |
1125 HBufC* msgBuffer = iCoeEnv->AllocReadResourceLC( R_FINDITEM_BOOKMARK_SAVED ); |
1233 CAknConfirmationNote* note = new (ELeave)CAknConfirmationNote( ETrue ); |
1126 CAknConfirmationNote* note = new (ELeave)CAknConfirmationNote( ETrue ); |
1234 note->ExecuteLD( *msgBuffer ); |
1127 note->ExecuteLD( *msgBuffer ); |
1235 |
1128 |
1236 CleanupStack::PopAndDestroy( 6 ); // item, db, sess, resourceLoader, |
1129 CleanupStack::PopAndDestroy( 3 ); // resourceLoader, |
1237 // defaultName, msgBuffer |
1130 // defaultName, msgBuffer |
1238 } |
1131 } |
1239 |
1132 |
1240 void CFindItemMenu::CreateContactCardL( TInt aCommandId ) |
1133 void CFindItemMenu::CreateContactCardL( TInt aCommandId ) |
1241 { |
1134 { |
1370 #endif // !RD_VIRTUAL_PHONEBOOK |
1263 #endif // !RD_VIRTUAL_PHONEBOOK |
1371 } |
1264 } |
1372 |
1265 |
1373 void CFindItemMenu::AddToGalleryL() |
1266 void CFindItemMenu::AddToGalleryL() |
1374 { |
1267 { |
1375 _LIT( KRamFileExtension,".ram" ); |
1268 //no need to do anything ,due to the remove of AknCommonDialogs |
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 } |
|
1404 } |
1269 } |
1405 |
1270 |
1406 EXPORT_C void CFindItemMenu::SetSenderDescriptorType( |
1271 EXPORT_C void CFindItemMenu::SetSenderDescriptorType( |
1407 CItemFinder::TItemType aType ) |
1272 CItemFinder::TItemType aType ) |
1408 { |
1273 { |
1419 iRPbkResourceFile = new (ELeave)RPbkViewResourceFile( *iCoeEnv ); |
1284 iRPbkResourceFile = new (ELeave)RPbkViewResourceFile( *iCoeEnv ); |
1420 iRPbkResourceFile->OpenL(); |
1285 iRPbkResourceFile->OpenL(); |
1421 iPbkEngine = CPbkContactEngine::NewL(); |
1286 iPbkEngine = CPbkContactEngine::NewL(); |
1422 iPbkDataSave = CPbkDataSaveAppUi::NewL( *iPbkEngine ); |
1287 iPbkDataSave = CPbkDataSaveAppUi::NewL( *iPbkEngine ); |
1423 #endif // !RD_VIRTUAL_PHONEBOOK |
1288 #endif // !RD_VIRTUAL_PHONEBOOK |
1424 iSendUi = CSendUi::NewL(); |
|
1425 |
1289 |
1426 TRAPD( ret, iCommonUiRepository = CRepository::NewL( KCRUidCommonUi ) ); |
1290 TRAPD( ret, iCommonUiRepository = CRepository::NewL( KCRUidCommonUi ) ); |
1427 if ( ret == KErrNone ) |
1291 if ( ret == KErrNone ) |
1428 { |
1292 { |
1429 iCommonUiRepositoryWatcher = CCommonUiRepositoryWatcher::NewL( |
1293 iCommonUiRepositoryWatcher = CCommonUiRepositoryWatcher::NewL( |
1569 return ETrue; |
1433 return ETrue; |
1570 } |
1434 } |
1571 |
1435 |
1572 void CFindItemMenu::LaunchGenericUriL() |
1436 void CFindItemMenu::LaunchGenericUriL() |
1573 { |
1437 { |
1574 if ( iSchemeHandler ) |
1438 |
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 } |
|
1588 } |
1439 } |
1589 |
1440 |
1590 EXPORT_C void CFindItemMenu::SetCallbackNumber( const TDesC& aPhoneNumber ) |
1441 EXPORT_C void CFindItemMenu::SetCallbackNumber( const TDesC& aPhoneNumber ) |
1591 { |
1442 { |
1592 delete iCallbackNumber; |
1443 delete iCallbackNumber; |