commonuis/CommonUi/src/FindItemMenu.cpp
changeset 47 2f0c06423c72
parent 33 b3425bf29f82
equal deleted inserted replaced
46:0e1e0022bd03 47:2f0c06423c72
    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(