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( KSetOpenItemString, "!openitem?id=" ); |
53 _LIT( KHideExit2, "&exit=hide" ); |
|
54 _LIT( KSetFocusString, "!setfocus?applicationgroup_name=" ); |
|
55 _LIT( KApplicationGroupName, "applicationgroup_name" ); |
54 _LIT( KIcon, "icon" ); |
56 _LIT( KIcon, "icon" ); |
55 _LIT( KMenuAttrUndefUid, "0x99999991" ); |
57 _LIT( KMenuAttrUndefUid, "0x99999991" ); |
56 _LIT( KMenuIconFile, "aimcsplugin.mif" ); |
58 _LIT( KMenuIconFile, "aimcsplugin.mif" ); |
57 _LIT( KMenuBookmarkIconId, "16386" ); |
59 _LIT( KMenuBookmarkIconId, "16386" ); |
58 _LIT( KMenuBookmarkMaskId, "16387" ); |
60 _LIT( KMenuBookmarkMaskId, "16387" ); |
59 _LIT( KMenuMailboxIconId, "16388" ); |
61 _LIT( KMenuMailboxIconId, "16388" ); |
60 _LIT( KMenuMailboxMaskId, "16389" ); |
62 _LIT( KMenuMailboxMaskId, "16389" ); |
61 _LIT( KMenuTypeMailbox, "menu:mailbox" ); |
63 _LIT( KMenuTypeMailbox, "menu:mailbox" ); |
62 _LIT( KPrefix, "0x" ); |
64 _LIT( KPrefix, "0x" ); |
63 _LIT( KMenuAttrInvokeSettingsUid, "0x99999990" ); |
|
64 |
65 |
65 const TUid KHomescreenUid = { AI_UID3_AIFW_COMMON }; |
66 const TUid KHomescreenUid = { AI_UID3_AIFW_COMMON }; |
66 const TUid KMMUid = { 0x101F4CD2 }; |
67 const TUid KMMUid = { 0x101F4CD2 }; |
67 const TUid KMCSCmailUidValue = { 0x2001E277 }; |
68 const TUid KMCSCmailUidValue = { 0x2001E277 }; |
68 const TUid KMCSCmailMailboxViewIdValue = { 0x2 }; |
69 const TUid KMCSCmailMailboxViewIdValue = { 0x2 }; |
69 const TUid KBrowserUid = { 0x10008D39 }; |
70 const TUid KBrowserUid = { 0x10008D39 }; |
70 |
|
71 // maximum custom message length |
|
72 const TInt KMaxCustomMsg = 256; |
|
73 const TInt KUndefinedIndex = -1; |
|
74 |
|
75 // maximun integer character length |
|
76 const TInt KMaxLength = 12; |
|
77 |
71 |
78 // ======== LOCAL FUNCTIONS ======== |
72 // ======== LOCAL FUNCTIONS ======== |
79 // ---------------------------------------------------------------------------- |
73 // ---------------------------------------------------------------------------- |
80 // NextIdToken |
74 // NextIdToken |
81 // ---------------------------------------------------------------------------- |
75 // ---------------------------------------------------------------------------- |
359 CMenuItem* item( NULL ); |
353 CMenuItem* item( NULL ); |
360 if( aData.MenuItem().Id() != KErrNotFound ) |
354 if( aData.MenuItem().Id() != KErrNotFound ) |
361 { |
355 { |
362 item = CMenuItem::CreateL( iMenu, KMenuTypeUrl, 0, 0 ); |
356 item = CMenuItem::CreateL( iMenu, KMenuTypeUrl, 0, 0 ); |
363 CleanupStack::PushL( item ); |
357 CleanupStack::PushL( item ); |
364 item->SetAttributeL( KMenuAttrLongName, *aData.Name() ); |
358 item->SetAttributeL( KMenuAttrLongName, aData.Name() ); |
365 item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile ); |
359 item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile ); |
366 item->SetAttributeL( KMenuAttrIconId, KMenuBookmarkIconId ); |
360 item->SetAttributeL( KMenuAttrIconId, KMenuBookmarkIconId ); |
367 item->SetAttributeL( KMenuAttrMaskId, KMenuBookmarkMaskId ); |
361 item->SetAttributeL( KMenuAttrMaskId, KMenuBookmarkMaskId ); |
368 CleanupStack::Pop( item ); |
362 CleanupStack::Pop( item ); |
369 } |
363 } |
379 CMenuItem* item( NULL ); |
373 CMenuItem* item( NULL ); |
380 if( aData.MenuItem().Id() != KErrNotFound ) |
374 if( aData.MenuItem().Id() != KErrNotFound ) |
381 { |
375 { |
382 item = CMenuItem::CreateL( iMenu, KMenuTypeMailbox, 0, 0 ); |
376 item = CMenuItem::CreateL( iMenu, KMenuTypeMailbox, 0, 0 ); |
383 CleanupStack::PushL( item ); |
377 CleanupStack::PushL( item ); |
384 item->SetAttributeL( KMenuAttrLongName, *aData.Name() ); |
378 item->SetAttributeL( KMenuAttrLongName, aData.Name() ); |
385 item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile ); |
379 item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile ); |
386 item->SetAttributeL( KMenuAttrIconId, KMenuMailboxIconId ); |
380 item->SetAttributeL( KMenuAttrIconId, KMenuMailboxIconId ); |
387 item->SetAttributeL( KMenuAttrMaskId, KMenuMailboxMaskId ); |
381 item->SetAttributeL( KMenuAttrMaskId, KMenuMailboxMaskId ); |
388 CleanupStack::Pop( item ); |
382 CleanupStack::Pop( item ); |
389 } |
383 } |
407 { |
401 { |
408 TUint32 flags = aMenuItem->Flags(); |
402 TUint32 flags = aMenuItem->Flags(); |
409 TUint32 isHidden = flags & TMenuItem::EHidden; |
403 TUint32 isHidden = flags & TMenuItem::EHidden; |
410 TUint32 isMissing = flags & TMenuItem::EMissing; |
404 TUint32 isMissing = flags & TMenuItem::EMissing; |
411 |
405 |
412 TBool attrExists = ETrue; |
406 if ( iUndefinedItem && ( isHidden || isMissing ) ) |
413 TPtrC uid = aMenuItem->GetAttributeL(KMenuAttrUid, attrExists); |
|
414 |
|
415 // if item is hidden or missing (mmc card removed) |
|
416 // use "Undefined" icon instead |
|
417 // for empty item it's own icon is shown |
|
418 if ( iUndefinedItem && uid.Compare(KMenuAttrInvokeSettingsUid) != 0 && |
|
419 ( isHidden || isMissing ) ) |
|
420 { |
407 { |
421 menuItem = iUndefinedItem; |
408 menuItem = iUndefinedItem; |
422 } |
409 } |
423 else |
410 else |
424 { |
411 { |
482 { |
469 { |
483 TUint32 flags = aMenuItem->Flags(); |
470 TUint32 flags = aMenuItem->Flags(); |
484 TUint32 isHidden = flags & TMenuItem::EHidden; |
471 TUint32 isHidden = flags & TMenuItem::EHidden; |
485 TUint32 isMissing = flags & TMenuItem::EMissing; |
472 TUint32 isMissing = flags & TMenuItem::EMissing; |
486 |
473 |
487 TBool attrExists = ETrue; |
|
488 TPtrC uid = aMenuItem->GetAttributeL(KMenuAttrUid, attrExists); |
|
489 |
|
490 // if item is hidden or missing (mmc card removed) |
474 // if item is hidden or missing (mmc card removed) |
491 // use "Undefined" text instead |
475 // use "Undefined" text instead |
492 // for empty item it's own icon is shown |
476 if ( iUndefinedItem && ( isHidden || isMissing ) ) |
493 if ( iUndefinedItem && uid.Compare(KMenuAttrInvokeSettingsUid) != 0 && |
|
494 ( isHidden || isMissing ) ) |
|
495 { |
477 { |
496 menuItem = iUndefinedItem; |
478 menuItem = iUndefinedItem; |
497 } |
479 } |
498 else |
480 else |
499 { |
481 { |
548 { |
530 { |
549 LaunchMailboxItemL( dataItem ); |
531 LaunchMailboxItemL( dataItem ); |
550 } |
532 } |
551 else |
533 else |
552 { |
534 { |
553 CMenuItem* item(CMenuItem::OpenL(iMenu, dataItem.MenuItem().Id())); |
535 LaunchMCSItemL( dataItem ); |
554 CleanupStack::PushL(item); |
|
555 |
|
556 TBool attrExists = ETrue; |
|
557 |
|
558 TPtrC uid = item->GetAttributeL(KMenuAttrUid, attrExists); |
|
559 |
|
560 // Show selected shortcut settings |
|
561 if (uid.Compare(KMenuAttrInvokeSettingsUid) == 0) |
|
562 { |
|
563 TRAP_IGNORE( ShowSettingsL(aIndex + 1) ); |
|
564 } |
|
565 else |
|
566 { |
|
567 LaunchMCSItemL(dataItem); |
|
568 } |
|
569 CleanupStack::PopAndDestroy(item); |
|
570 } |
536 } |
571 } |
537 } |
572 |
538 |
573 // --------------------------------------------------------------------------- |
539 // --------------------------------------------------------------------------- |
574 // |
540 // |
592 |
558 |
593 // message for MM application |
559 // message for MM application |
594 HBufC8* message; |
560 HBufC8* message; |
595 |
561 |
596 // prepare message for launching folder |
562 // prepare message for launching folder |
597 TBuf<KMaxLength> itemId; |
563 TBool hasApplicationGroupName( EFalse ); |
598 itemId.Num( item->Id() ); |
564 |
599 |
565 TPtrC applicationGroupName( item->GetAttributeL( |
600 message = HBufC8::NewLC( KMMApplication().Length() |
566 KApplicationGroupName, hasApplicationGroupName ) ); |
601 + KSetOpenItemString().Length() |
567 |
602 + itemId.Length() ); |
568 if ( !hasApplicationGroupName ) |
|
569 { |
|
570 return; |
|
571 } |
|
572 |
|
573 message = HBufC8::NewLC( KMMApplication().Length() + |
|
574 KSetFocusString().Length() + |
|
575 applicationGroupName.Length() + |
|
576 KHideExit2().Length() ); |
|
577 |
603 message->Des().Copy( KMMApplication ); |
578 message->Des().Copy( KMMApplication ); |
604 message->Des().Append( KSetOpenItemString ); |
579 message->Des().Append( KSetFocusString ); |
605 message->Des().Append( itemId ); |
580 message->Des().Append( applicationGroupName ); |
|
581 message->Des().Append( KHideExit2 ); |
606 |
582 |
607 // find MM application |
583 // find MM application |
608 TApaTaskList taskList( CCoeEnv::Static()->WsSession() ); |
584 TApaTaskList taskList( CCoeEnv::Static()->WsSession() ); |
609 TApaTask task( taskList.FindApp( KMMUid ) ); |
585 TApaTask task( taskList.FindApp( KMMUid ) ); |
610 |
586 |
790 // --------------------------------------------------------------------------- |
767 // --------------------------------------------------------------------------- |
791 // CMCSPluginEngine::ShowSettingsL |
768 // CMCSPluginEngine::ShowSettingsL |
792 // Launch General Settings plugin |
769 // Launch General Settings plugin |
793 // --------------------------------------------------------------------------- |
770 // --------------------------------------------------------------------------- |
794 // |
771 // |
795 void CMCSPluginEngine::ShowSettingsL( const TInt aEditIdx ) |
772 void CMCSPluginEngine::ShowSettingsL() |
796 { |
773 { |
797 TUid uid = {AI_UID_ECOM_IMPLEMENTATION_SETTINGS_MCSPLUGIN}; |
774 TUid uid = {AI_UID_ECOM_IMPLEMENTATION_SETTINGS_MCSPLUGIN}; |
798 |
775 |
799 // format the custom message |
|
800 // iInstanceUid/aEditIdx is the format |
|
801 TBuf8<KMaxCustomMsg> msg; |
|
802 msg.Append(iInstanceUid); |
|
803 if( aEditIdx != KUndefinedIndex ) |
|
804 { |
|
805 msg.Append('//'); |
|
806 msg.AppendFormat(_L8("%d"), aEditIdx); |
|
807 } |
|
808 |
|
809 CGSLauncher* launcher = CGSLauncher::NewLC(); |
776 CGSLauncher* launcher = CGSLauncher::NewLC(); |
810 launcher->LaunchGSViewL ( uid, KHomescreenUid, msg ); |
777 launcher->LaunchGSViewL ( uid, KHomescreenUid, iInstanceUid ); |
811 CleanupStack::PopAndDestroy( launcher ); |
778 CleanupStack::PopAndDestroy( launcher ); |
812 } |
779 } |
813 |
780 |
814 // --------------------------------------------------------------------------- |
781 // --------------------------------------------------------------------------- |
815 // CMCSPluginEngine::ConstructMenuItemForIconL |
782 // CMCSPluginEngine::ConstructMenuItemForIconL |