48 _LIT( KMif, "mif" ); |
48 _LIT( KMif, "mif" ); |
49 _LIT( KResourceDrive, "Z:" ); |
49 _LIT( KResourceDrive, "Z:" ); |
50 _LIT( KResourceFile, "mcspluginres.rsc" ); |
50 _LIT( KResourceFile, "mcspluginres.rsc" ); |
51 _LIT( KResPath, "\\resource\\" ); |
51 _LIT( KResPath, "\\resource\\" ); |
52 _LIT( KMMApplication, "mm://" ); |
52 _LIT( KMMApplication, "mm://" ); |
53 _LIT( KHideExit2, "&exit=hide" ); |
|
54 _LIT( KSetFocusString, "!setfocus?applicationgroup_name=" ); |
53 _LIT( KSetFocusString, "!setfocus?applicationgroup_name=" ); |
55 _LIT( KApplicationGroupName, "applicationgroup_name" ); |
54 _LIT( KApplicationGroupName, "applicationgroup_name" ); |
56 _LIT( KIcon, "icon" ); |
55 _LIT( KIcon, "icon" ); |
57 _LIT( KMenuAttrUndefUid, "0x99999991" ); |
56 _LIT( KMenuAttrUndefUid, "0x99999991" ); |
58 _LIT( KMenuIconFile, "aimcsplugin.mif" ); |
57 _LIT( KMenuIconFile, "aimcsplugin.mif" ); |
60 _LIT( KMenuBookmarkMaskId, "16387" ); |
59 _LIT( KMenuBookmarkMaskId, "16387" ); |
61 _LIT( KMenuMailboxIconId, "16388" ); |
60 _LIT( KMenuMailboxIconId, "16388" ); |
62 _LIT( KMenuMailboxMaskId, "16389" ); |
61 _LIT( KMenuMailboxMaskId, "16389" ); |
63 _LIT( KMenuTypeMailbox, "menu:mailbox" ); |
62 _LIT( KMenuTypeMailbox, "menu:mailbox" ); |
64 _LIT( KPrefix, "0x" ); |
63 _LIT( KPrefix, "0x" ); |
|
64 _LIT( KMenuAttrInvokeSettingsUid, "0x99999990" ); |
65 |
65 |
66 const TUid KHomescreenUid = { AI_UID3_AIFW_COMMON }; |
66 const TUid KHomescreenUid = { AI_UID3_AIFW_COMMON }; |
67 const TUid KMMUid = { 0x101F4CD2 }; |
67 const TUid KMMUid = { 0x101F4CD2 }; |
68 const TUid KMCSCmailUidValue = { 0x2001E277 }; |
68 const TUid KMCSCmailUidValue = { 0x2001E277 }; |
69 const TUid KMCSCmailMailboxViewIdValue = { 0x2 }; |
69 const TUid KMCSCmailMailboxViewIdValue = { 0x2 }; |
70 const TUid KBrowserUid = { 0x10008D39 }; |
70 const TUid KBrowserUid = { 0x10008D39 }; |
|
71 |
|
72 // maximum custom message length |
|
73 const TInt KMaxCustomMsg = 256; |
|
74 const TInt KUndefinedIndex = -1; |
71 |
75 |
72 // ======== LOCAL FUNCTIONS ======== |
76 // ======== LOCAL FUNCTIONS ======== |
73 // ---------------------------------------------------------------------------- |
77 // ---------------------------------------------------------------------------- |
74 // NextIdToken |
78 // NextIdToken |
75 // ---------------------------------------------------------------------------- |
79 // ---------------------------------------------------------------------------- |
353 CMenuItem* item( NULL ); |
357 CMenuItem* item( NULL ); |
354 if( aData.MenuItem().Id() != KErrNotFound ) |
358 if( aData.MenuItem().Id() != KErrNotFound ) |
355 { |
359 { |
356 item = CMenuItem::CreateL( iMenu, KMenuTypeUrl, 0, 0 ); |
360 item = CMenuItem::CreateL( iMenu, KMenuTypeUrl, 0, 0 ); |
357 CleanupStack::PushL( item ); |
361 CleanupStack::PushL( item ); |
358 item->SetAttributeL( KMenuAttrLongName, aData.Name() ); |
362 item->SetAttributeL( KMenuAttrLongName, *aData.Name() ); |
359 item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile ); |
363 item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile ); |
360 item->SetAttributeL( KMenuAttrIconId, KMenuBookmarkIconId ); |
364 item->SetAttributeL( KMenuAttrIconId, KMenuBookmarkIconId ); |
361 item->SetAttributeL( KMenuAttrMaskId, KMenuBookmarkMaskId ); |
365 item->SetAttributeL( KMenuAttrMaskId, KMenuBookmarkMaskId ); |
362 CleanupStack::Pop( item ); |
366 CleanupStack::Pop( item ); |
363 } |
367 } |
373 CMenuItem* item( NULL ); |
377 CMenuItem* item( NULL ); |
374 if( aData.MenuItem().Id() != KErrNotFound ) |
378 if( aData.MenuItem().Id() != KErrNotFound ) |
375 { |
379 { |
376 item = CMenuItem::CreateL( iMenu, KMenuTypeMailbox, 0, 0 ); |
380 item = CMenuItem::CreateL( iMenu, KMenuTypeMailbox, 0, 0 ); |
377 CleanupStack::PushL( item ); |
381 CleanupStack::PushL( item ); |
378 item->SetAttributeL( KMenuAttrLongName, aData.Name() ); |
382 item->SetAttributeL( KMenuAttrLongName, *aData.Name() ); |
379 item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile ); |
383 item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile ); |
380 item->SetAttributeL( KMenuAttrIconId, KMenuMailboxIconId ); |
384 item->SetAttributeL( KMenuAttrIconId, KMenuMailboxIconId ); |
381 item->SetAttributeL( KMenuAttrMaskId, KMenuMailboxMaskId ); |
385 item->SetAttributeL( KMenuAttrMaskId, KMenuMailboxMaskId ); |
382 CleanupStack::Pop( item ); |
386 CleanupStack::Pop( item ); |
383 } |
387 } |
401 { |
405 { |
402 TUint32 flags = aMenuItem->Flags(); |
406 TUint32 flags = aMenuItem->Flags(); |
403 TUint32 isHidden = flags & TMenuItem::EHidden; |
407 TUint32 isHidden = flags & TMenuItem::EHidden; |
404 TUint32 isMissing = flags & TMenuItem::EMissing; |
408 TUint32 isMissing = flags & TMenuItem::EMissing; |
405 |
409 |
406 if ( iUndefinedItem && ( isHidden || isMissing ) ) |
410 TBool attrExists = ETrue; |
|
411 TPtrC uid = aMenuItem->GetAttributeL(KMenuAttrUid, attrExists); |
|
412 |
|
413 // if item is hidden or missing (mmc card removed) |
|
414 // use "Undefined" icon instead |
|
415 // for empty item it's own icon is shown |
|
416 if ( iUndefinedItem && uid.Compare(KMenuAttrInvokeSettingsUid) != 0 && |
|
417 ( isHidden || isMissing ) ) |
407 { |
418 { |
408 menuItem = iUndefinedItem; |
419 menuItem = iUndefinedItem; |
409 } |
420 } |
410 else |
421 else |
411 { |
422 { |
469 { |
480 { |
470 TUint32 flags = aMenuItem->Flags(); |
481 TUint32 flags = aMenuItem->Flags(); |
471 TUint32 isHidden = flags & TMenuItem::EHidden; |
482 TUint32 isHidden = flags & TMenuItem::EHidden; |
472 TUint32 isMissing = flags & TMenuItem::EMissing; |
483 TUint32 isMissing = flags & TMenuItem::EMissing; |
473 |
484 |
|
485 TBool attrExists = ETrue; |
|
486 TPtrC uid = aMenuItem->GetAttributeL(KMenuAttrUid, attrExists); |
|
487 |
474 // if item is hidden or missing (mmc card removed) |
488 // if item is hidden or missing (mmc card removed) |
475 // use "Undefined" text instead |
489 // use "Undefined" text instead |
476 if ( iUndefinedItem && ( isHidden || isMissing ) ) |
490 // for empty item it's own icon is shown |
|
491 if ( iUndefinedItem && uid.Compare(KMenuAttrInvokeSettingsUid) != 0 && |
|
492 ( isHidden || isMissing ) ) |
477 { |
493 { |
478 menuItem = iUndefinedItem; |
494 menuItem = iUndefinedItem; |
479 } |
495 } |
480 else |
496 else |
481 { |
497 { |
530 { |
546 { |
531 LaunchMailboxItemL( dataItem ); |
547 LaunchMailboxItemL( dataItem ); |
532 } |
548 } |
533 else |
549 else |
534 { |
550 { |
535 LaunchMCSItemL( dataItem ); |
551 CMenuItem* item(CMenuItem::OpenL(iMenu, dataItem.MenuItem().Id())); |
|
552 CleanupStack::PushL(item); |
|
553 |
|
554 TBool attrExists = ETrue; |
|
555 |
|
556 TPtrC uid = item->GetAttributeL(KMenuAttrUid, attrExists); |
|
557 |
|
558 // Show selected shortcut settings |
|
559 if (uid.Compare(KMenuAttrInvokeSettingsUid) == 0) |
|
560 { |
|
561 TRAP_IGNORE( ShowSettingsL(aIndex + 1) ); |
|
562 } |
|
563 else |
|
564 { |
|
565 LaunchMCSItemL(dataItem); |
|
566 } |
|
567 CleanupStack::PopAndDestroy(item); |
536 } |
568 } |
537 } |
569 } |
538 |
570 |
539 // --------------------------------------------------------------------------- |
571 // --------------------------------------------------------------------------- |
540 // |
572 // |
565 TPtrC applicationGroupName( item->GetAttributeL( |
597 TPtrC applicationGroupName( item->GetAttributeL( |
566 KApplicationGroupName, hasApplicationGroupName ) ); |
598 KApplicationGroupName, hasApplicationGroupName ) ); |
567 |
599 |
568 if ( !hasApplicationGroupName ) |
600 if ( !hasApplicationGroupName ) |
569 { |
601 { |
|
602 CleanupStack::PopAndDestroy( item ); |
570 return; |
603 return; |
571 } |
604 } |
572 |
605 |
573 message = HBufC8::NewLC( KMMApplication().Length() + |
606 message = HBufC8::NewLC( KMMApplication().Length() + |
574 KSetFocusString().Length() + |
607 KSetFocusString().Length() + |
575 applicationGroupName.Length() + |
608 applicationGroupName.Length() ); |
576 KHideExit2().Length() ); |
|
577 |
609 |
578 message->Des().Copy( KMMApplication ); |
610 message->Des().Copy( KMMApplication ); |
579 message->Des().Append( KSetFocusString ); |
611 message->Des().Append( KSetFocusString ); |
580 message->Des().Append( applicationGroupName ); |
612 message->Des().Append( applicationGroupName ); |
581 message->Des().Append( KHideExit2 ); |
|
582 |
613 |
583 // find MM application |
614 // find MM application |
584 TApaTaskList taskList( CCoeEnv::Static()->WsSession() ); |
615 TApaTaskList taskList( CCoeEnv::Static()->WsSession() ); |
585 TApaTask task( taskList.FindApp( KMMUid ) ); |
616 TApaTask task( taskList.FindApp( KMMUid ) ); |
586 |
617 |
622 // |
653 // |
623 void CMCSPluginEngine::LaunchBookmarkItemL( CMCSData& aData ) |
654 void CMCSPluginEngine::LaunchBookmarkItemL( CMCSData& aData ) |
624 { |
655 { |
625 StartEffect( KBrowserUid ); |
656 StartEffect( KBrowserUid ); |
626 |
657 |
627 CSchemeHandler* urlHandler = CSchemeHandler::NewL( aData.Value()); |
658 CSchemeHandler* urlHandler = CSchemeHandler::NewL( *aData.Value()); |
628 CleanupStack::PushL( urlHandler ); |
659 CleanupStack::PushL( urlHandler ); |
629 urlHandler->HandleUrlStandaloneL(); |
660 urlHandler->HandleUrlStandaloneL(); |
630 CleanupStack::PopAndDestroy( urlHandler ); |
661 CleanupStack::PopAndDestroy( urlHandler ); |
631 } |
662 } |
632 |
663 |
766 // --------------------------------------------------------------------------- |
797 // --------------------------------------------------------------------------- |
767 // CMCSPluginEngine::ShowSettingsL |
798 // CMCSPluginEngine::ShowSettingsL |
768 // Launch General Settings plugin |
799 // Launch General Settings plugin |
769 // --------------------------------------------------------------------------- |
800 // --------------------------------------------------------------------------- |
770 // |
801 // |
771 void CMCSPluginEngine::ShowSettingsL() |
802 void CMCSPluginEngine::ShowSettingsL( const TInt aEditIdx ) |
772 { |
803 { |
773 TUid uid = {AI_UID_ECOM_IMPLEMENTATION_SETTINGS_MCSPLUGIN}; |
804 TUid uid = {AI_UID_ECOM_IMPLEMENTATION_SETTINGS_MCSPLUGIN}; |
774 |
805 |
|
806 // format the custom message |
|
807 // iInstanceUid/aEditIdx is the format |
|
808 TBuf8<KMaxCustomMsg> msg; |
|
809 msg.Append(iInstanceUid); |
|
810 if( aEditIdx != KUndefinedIndex ) |
|
811 { |
|
812 msg.Append('//'); |
|
813 msg.AppendFormat(_L8("%d"), aEditIdx); |
|
814 } |
|
815 |
775 CGSLauncher* launcher = CGSLauncher::NewLC(); |
816 CGSLauncher* launcher = CGSLauncher::NewLC(); |
776 launcher->LaunchGSViewL ( uid, KHomescreenUid, iInstanceUid ); |
817 launcher->LaunchGSViewL ( uid, KHomescreenUid, msg ); |
777 CleanupStack::PopAndDestroy( launcher ); |
818 CleanupStack::PopAndDestroy( launcher ); |
778 } |
819 } |
779 |
820 |
780 // --------------------------------------------------------------------------- |
821 // --------------------------------------------------------------------------- |
781 // CMCSPluginEngine::ConstructMenuItemForIconL |
822 // CMCSPluginEngine::ConstructMenuItemForIconL |