diff -r 356f28cd5ca0 -r ed599363c2d7 calendarui/controller/src/calencmdlinelauncher.cpp --- a/calendarui/controller/src/calencmdlinelauncher.cpp Wed Sep 15 12:11:35 2010 +0300 +++ b/calendarui/controller/src/calencmdlinelauncher.cpp Wed Oct 13 14:30:35 2010 +0300 @@ -151,6 +151,45 @@ // If aTail is set, other app starts Calendar if( aTail.Length() ) { + + + // Interpret 8bit data as 16bit unicode data + //lint -e{826} Disable the lint warning of the pointer sizes being different + const TText* buf = reinterpret_cast (aTail.Ptr()); + TPtrC ptr(buf, aTail.Length() / (TInt) sizeof(TText)); + + // create cmd line parser + CCalenCmdLineParser* parser = CCalenCmdLineParser::NewL(); + CleanupStack::PushL(parser); + // parse parameters + parser->ParseCommandLineL(ptr); + iCmdParameters = parser->CommandLineParameters(); + CleanupStack::PopAndDestroy(); // parser + + if( iCmdParameters.iCommandType == CCalenCmdLineParser::EStartTypeUidAlarmViewer + || iCmdParameters.iCommandType == CCalenCmdLineParser::EStartTypeUidAlarmViewerNoSnooze) + + { + // disable the MSK feature when the same events editor is opened whose alarm is expiring. + if(iController.IsEditorActive()) + { + TCalLocalUid uid( iCmdParameters.iLocalUid ); + TCalCollectionId colId = iGlobalData->CalSessionL( iCmdParameters.iCalenFileName ).CollectionIdL(); + + // get the context + MCalenContext& context = iController.Services().Context(); + TCalLocalUid entryUid = context.InstanceId().iEntryLocalUid; + TCalCollectionId collectionId = context.InstanceId().iColId; + + if(entryUid == uid && colId == collectionId) + { + return ETrue; + } + } + } + + + // If we are displaying a dialog, then Calendar is obviously already open // If we have been launched with cmd line parameters, we need to close the // open dialog and deal with the command line. An example of this would be that @@ -170,19 +209,6 @@ //close all open dialogs in asynchronous way iShutter->ShutDialogsL(); } - - // Interpret 8bit data as 16bit unicode data - //lint -e{826} Disable the lint warning of the pointer sizes being different - const TText* buf = reinterpret_cast (aTail.Ptr()); - TPtrC ptr(buf, aTail.Length() / (TInt) sizeof(TText)); - - // create cmd line parser - CCalenCmdLineParser* parser = CCalenCmdLineParser::NewL(); - CleanupStack::PushL(parser); - // parse parameters - parser->ParseCommandLineL(ptr); - iCmdParameters = parser->CommandLineParameters(); - CleanupStack::PopAndDestroy(); // parser } // If we are launched to a specific view, find and activate it.