devicediagnostics/diagplugins/DiagInternalMemoryPlugin/src/diaginternalmemoryplugin.cpp
changeset 0 3ce708148e4d
child 54 9360ca28b668
equal deleted inserted replaced
-1:000000000000 0:3ce708148e4d
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Internal Memory Test Plugin
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // CLASS DECLARATION
       
    20 #include "diaginternalmemoryplugin.h"
       
    21 
       
    22 // SYSTME INCLUDE FILES
       
    23 #include <featmgr.h>                    // feature manager for MMC support checking
       
    24 #include <features.hrh>
       
    25 //#ifndef RD_MULTIPLE_DRIVE
       
    26 #include <pathinfo.h>                   //PathInfo
       
    27 //#endif // RD_MULTIPLE_DRIVE
       
    28 #include <sysutil.h>                    //SysUtil
       
    29 #include <StringLoader.h>               // StringLoader
       
    30 
       
    31 #include <DiagTestObserver.h>           // MDiagTestObserver
       
    32 #include <DiagTestExecParam.h>          // TDiagTestExecParam
       
    33 #include <DiagResultsDbItemBuilder.h>   // CDiagResultsDbItemBuilder
       
    34 #include <DiagResultDetailBasic.h>      // CDiagResultDetailBasic
       
    35 #include <DiagFrameworkDebug.h>         // LOGSTRING
       
    36 #include <devdiaginternalmemorypluginrsc.rsg>
       
    37 
       
    38 #include "diaginternalmemoryplugin.hrh" // ADO & Platformization Changes
       
    39 
       
    40 #include <AknDialog.h> // ADO & Platformization Changes
       
    41 #include <aknmessagequerydialog.h>  // ADO & Platformization Changes
       
    42 #include <DiagCommonDialog.h>          // for EDiagCommonDialogConfirmCancelAll 
       
    43 #include <DiagEngineCommon.h> 
       
    44  
       
    45 
       
    46 
       
    47 // EXTERNAL DATA STRUCTURES
       
    48 
       
    49 // EXTERNAL FUNCTION PROTOTYPES
       
    50 
       
    51 // CONSTANTS 
       
    52 const TInt KDiagInternalMemoryStepsMaxCount = 3;   //total test steps
       
    53 _LIT( KText1, "PhoneDoctor Internal Memory Test" );
       
    54 
       
    55 // MACROS
       
    56 
       
    57 // LOCAL CONSTANTS AND MACROS
       
    58 
       
    59 // MODULE DATA STRUCTURES
       
    60 
       
    61 // LOCAL FUNCTION PROTOTYPES
       
    62 
       
    63 // FORWARD DECLARATIONS
       
    64 
       
    65 // ============================= LOCAL FUNCTIONS ==============================
       
    66 
       
    67 // ========================= MEMBER FUNCTIONS ================================
       
    68 
       
    69 // ----------------------------------------------------------------------------
       
    70 // CDiagInternalMemoryPlugin::CDiagInternalMemoryPlugin()
       
    71 //
       
    72 // Constructor
       
    73 // ----------------------------------------------------------------------------
       
    74 //
       
    75 CDiagInternalMemoryPlugin::CDiagInternalMemoryPlugin( CDiagPluginConstructionParam* aParam )
       
    76     :   CDiagTestPluginBase( aParam )
       
    77     {
       
    78     }
       
    79 
       
    80 
       
    81 // ---------------------------------------------------------------------------
       
    82 // CDiagInternalMemoryPlugin::NewL()
       
    83 //
       
    84 // Symbian OS default constructor
       
    85 // ---------------------------------------------------------------------------
       
    86 MDiagPlugin* CDiagInternalMemoryPlugin::NewL( TAny* aInitParams )
       
    87     {
       
    88     ASSERT( aInitParams );
       
    89     LOGSTRING( "CDiagInternalMemory::NewL" );
       
    90     
       
    91 
       
    92     CDiagPluginConstructionParam* param = 
       
    93             static_cast<CDiagPluginConstructionParam*>( aInitParams );    
       
    94     CleanupStack::PushL( param );    
       
    95     CDiagInternalMemoryPlugin* self = new( ELeave ) CDiagInternalMemoryPlugin (param);
       
    96     CleanupStack::Pop( param );
       
    97     
       
    98     CleanupStack::PushL( self );
       
    99     self->ConstructL();
       
   100     CleanupStack::Pop( self ); // self    
       
   101     return self;
       
   102     }
       
   103 
       
   104 
       
   105 
       
   106 // ---------------------------------------------------------------------------
       
   107 // CDiagInternalMemoryPlugin::ConstructL()
       
   108 //
       
   109 // Symbian OS two-phased constructor
       
   110 // ---------------------------------------------------------------------------
       
   111 void CDiagInternalMemoryPlugin::ConstructL()
       
   112     {
       
   113     LOGSTRING("CDiagInternalMemoryPlugin::ConstructL: Plugin created.");
       
   114     idialogOn = EFalse;
       
   115 	idialogDismissed = EFalse;
       
   116     BaseConstructL ( KDiagInternalMemoryPluginResourceFileName );            
       
   117     }
       
   118 
       
   119 
       
   120 // ----------------------------------------------------------------------------
       
   121 // CDiagInternalMemoryPlugin::~CDiagInternalMemoryPlugin
       
   122 //
       
   123 // Destructor
       
   124 // ----------------------------------------------------------------------------
       
   125 CDiagInternalMemoryPlugin::~CDiagInternalMemoryPlugin()
       
   126     {        
       
   127     
       
   128     }
       
   129 
       
   130 
       
   131 // ---------------------------------------------------------------------------
       
   132 // From MDiagPlugin
       
   133 // CDiagInternalMemoryPlugin::IsVisible()
       
   134 // ---------------------------------------------------------------------------
       
   135 TBool CDiagInternalMemoryPlugin::IsVisible() const
       
   136     {
       
   137     return ETrue;
       
   138     }
       
   139 
       
   140 
       
   141 // ---------------------------------------------------------------------------
       
   142 // From MDiagPlugin
       
   143 // CDiagInternalMemoryPlugin::IsSupported()
       
   144 // ---------------------------------------------------------------------------
       
   145 TBool CDiagInternalMemoryPlugin::IsSupported() const
       
   146     {
       
   147     return ETrue;
       
   148     }    
       
   149 
       
   150         
       
   151 // ---------------------------------------------------------------------------
       
   152 // From MDiagTestPlugin
       
   153 // CDiagInternalMemoryPlugin::RunMode()
       
   154 // ---------------------------------------------------------------------------
       
   155 MDiagTestPlugin::TRunMode CDiagInternalMemoryPlugin::RunMode() const
       
   156     {
       
   157     return EAutomatic;
       
   158     }
       
   159 
       
   160 
       
   161 
       
   162 
       
   163 // ---------------------------------------------------------------------------
       
   164 // From MDiagTestPlugin
       
   165 // CDiagInternalMemoryPlugin::TotalSteps()
       
   166 // ---------------------------------------------------------------------------
       
   167 TUint CDiagInternalMemoryPlugin::TotalSteps() const
       
   168     {
       
   169     return KDiagInternalMemoryStepsMaxCount;
       
   170     }
       
   171 
       
   172 
       
   173 // ---------------------------------------------------------------------------
       
   174 // From MDiagPlugin
       
   175 // CDiagInternalMemoryPlugin::GetPluginName
       
   176 // ---------------------------------------------------------------------------
       
   177 HBufC* CDiagInternalMemoryPlugin::GetPluginNameL( TNameLayoutType aLayoutType ) const
       
   178     {
       
   179     
       
   180     switch ( aLayoutType )
       
   181         {
       
   182         case ENameLayoutListSingle:
       
   183             return StringLoader::LoadL ( R_DIAG_LST_INTERNAL_MEMORY );
       
   184             
       
   185         case ENameLayoutHeadingPane:
       
   186              return StringLoader::LoadL ( R_QTN_DIAG_MSG_TITLE_INTERNAL_MEMORY );
       
   187         
       
   188         case ENameLayoutPopupInfoPane:
       
   189               return StringLoader::LoadL ( R_QTN_DIAG_MSG_INFO_INTERNAL_MEMORY );
       
   190         
       
   191         case ENameLayoutTitlePane:
       
   192              return StringLoader::LoadL ( R_QTN_DIAG_TITLE_TEST_INTERNAL_MEMORY );
       
   193         
       
   194         case ENameLayoutListSingleGraphic:
       
   195              return StringLoader::LoadL ( R_QTN_DIAG_LST_TEST_INTERNAL_MEMORY );            
       
   196 
       
   197         default:
       
   198             LOGSTRING2( "CDiagInternalMemoryPlugin::GetPluginNameL: "
       
   199                 L"ERROR: Unsupported layout type %d", aLayoutType )
       
   200             __ASSERT_DEBUG( 0, User::Invariant() );
       
   201             return StringLoader::LoadL ( R_DIAG_LST_INTERNAL_MEMORY );
       
   202         }
       
   203     }
       
   204 
       
   205 // ---------------------------------------------------------------------------
       
   206 // From MDiagPlugin
       
   207 // CDiagInternalMemoryPlugin::Uid
       
   208 // ---------------------------------------------------------------------------
       
   209 TUid CDiagInternalMemoryPlugin::Uid() const
       
   210     {
       
   211     return KDiagInternalMemoryPluginUid;
       
   212     }
       
   213 
       
   214     
       
   215 // ---------------------------------------------------------------------------
       
   216 // From CActive
       
   217 // CDiagInternalMemoryPlugin::RunL
       
   218 // ---------------------------------------------------------------------------
       
   219 void CDiagInternalMemoryPlugin::RunL()
       
   220     {
       
   221     
       
   222     //report test progress     	    
       
   223     if ( iCounter > 0 )
       
   224         {
       
   225         iCounter--;    
       
   226         ReportTestProgressL( KDiagInternalMemoryStepsMaxCount - iCounter );
       
   227         }     
       
   228     	
       
   229     // handle read or write action    	
       
   230     switch ( iState )
       
   231         {
       
   232         case EWriting:                            
       
   233     		if (idialogDismissed)
       
   234 	    		{
       
   235 	    		ReportResultToPluginL( CDiagResultsDatabaseItem::ESkipped );
       
   236 	    		LOGSTRING("CDiagExternalMediaCardPlugin::RunL dialogDismissed=EWriting");
       
   237 	    		//reset the var
       
   238 	    		idialogDismissed = EFalse;
       
   239 	    		return;
       
   240 	    		}
       
   241             //check if write is okay
       
   242             if ( iStatus == KErrNone )
       
   243                 {
       
   244                 LOGSTRING( "CDiagInternalMemory::RunL, write ok" );
       
   245                 iFile.Close();
       
   246 					
       
   247                 // read test			
       
   248                 TInt errorCodeOpen = iFile2.Open( iFs, iFileName, EFileRead );				
       
   249                 if ( errorCodeOpen!=KErrNone )
       
   250                     {
       
   251                     LOGSTRING( "CDiagInternalMemory::RunL,iFile2 open fail" );				
       
   252                     ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );	
       
   253                     return;
       
   254                     }			    
       
   255                 LOGSTRING( "CDiagInternalMemory::RunL, iFile2 open okay" );
       
   256 				
       
   257                 // Start read test
       
   258                 SetState( EReading ); 
       
   259                 iBufr.Zero();
       
   260                 iFile2.Read( iBufr, iStatus );
       
   261          				
       
   262                 SetActive();                
       
   263                 
       
   264                 }
       
   265             else   //write fail
       
   266                 {
       
   267                 LOGSTRING( "CDiagInternalMemory::RunL, write fail" );	
       
   268                 //set test result fail
       
   269                 ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );       			
       
   270                 }
       
   271             break;
       
   272     			
       
   273         case EReading:        
       
   274     		if (idialogDismissed)
       
   275 	    		{
       
   276 	    		ReportResultToPluginL( CDiagResultsDatabaseItem::ESkipped );
       
   277 	    		LOGSTRING("CDiagExternalMediaCardPlugin::RunL dialogDismissed=EReading");
       
   278 	    		//reset the var
       
   279 	    		idialogDismissed = EFalse;	    		
       
   280 	    		return;
       
   281 	    		}
       
   282             //check if read is okay
       
   283             if( iStatus == KErrNone )
       
   284                 {
       
   285                 LOGSTRING( "CDiagInternalMemory::RunL, read okay" );
       
   286 								
       
   287                 //compare data and set test result				
       
   288                 CDiagResultsDatabaseItem::TResult result = ( iBufr == iBufw )? 
       
   289                                                             CDiagResultsDatabaseItem::ESuccess
       
   290 				                                            : CDiagResultsDatabaseItem::EFailed;
       
   291                 ReportResultToPluginL( result );
       
   292                 LOGSTRING2( "CDiagInternalMemory::RunL,test result %d", result );
       
   293                 }
       
   294             else  //read fail
       
   295                 {
       
   296                 LOGSTRING( "CDiagInternalMemory::RunL, read fail" );  		
       
   297                 //set result fail
       
   298                 ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );
       
   299                 }
       
   300             break;
       
   301         default:
       
   302             LOGSTRING( "CDiagInternalMemory::RunL, default case" );
       
   303             //set result fail
       
   304             ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );       			
       
   305             break;
       
   306         }           
       
   307     }    
       
   308 
       
   309 
       
   310 // ---------------------------------------------------------------------------
       
   311 // From CActive
       
   312 // CDiagInternalMemoryPlugin::DoCancel
       
   313 // ---------------------------------------------------------------------------
       
   314 void CDiagInternalMemoryPlugin::DoCancel()
       
   315     {     
       
   316     switch ( iState )
       
   317         {
       
   318         case EReading:
       
   319             iFile.ReadCancel(iStatus);
       
   320             break;
       
   321             
       
   322         default:
       
   323             // No action needed
       
   324             break;
       
   325         }    
       
   326     }    
       
   327 
       
   328 
       
   329 // ---------------------------------------------------------------------------
       
   330 // From CDiagTestPluginBase
       
   331 // CDiagInternalMemoryPlugin::DoRunTestL()
       
   332 // ---------------------------------------------------------------------------
       
   333 void CDiagInternalMemoryPlugin::DoRunTestL()
       
   334     {
       
   335     TInt aButtonId; // ADO & Platformization Changes
       
   336     iCounter = KDiagInternalMemoryStepsMaxCount;
       
   337     // ADO & Platformization Changes
       
   338     
       
   339     ShowMessageQueryL(R_MESSAGEQUERY_TITLE_INTERNALMEMORY,aButtonId);
       
   340     
       
   341     if(aButtonId == ECBACmdCancel)
       
   342     	{
       
   343     	ReportResultToPluginL( CDiagResultsDatabaseItem::ESkipped );
       
   344         return;
       
   345     	}
       
   346     
       
   347     if(aButtonId == ECBACmdSkip)
       
   348     	{
       
   349 		TInt confirmResult = 0;
       
   350             
       
   351         CAknDialog* dlg = ExecutionParam().Engine().
       
   352         CreateCommonDialogLC( EDiagCommonDialogConfirmSkipAll, NULL );
       
   353     
       
   354         if ( !RunWaitingDialogL( dlg, confirmResult ) )
       
   355             {
       
   356             return;
       
   357             }
       
   358         
       
   359         if ( confirmResult)
       
   360             {
       
   361             return;
       
   362             }
       
   363     	}
       
   364     // Changes Ends
       
   365     
       
   366     
       
   367     //Start my test
       
   368     
       
   369     ShowProgressNoteL();
       
   370     
       
   371     SetState( EIdle );
       
   372         	            	  
       
   373     //check the drive number for internal memory
       
   374     TInt phoneMemoryDriveNum( 0 );
       
   375     // If path length is zero, driveLetterBuf will be empty.
       
   376     TBuf<1> driveLetterBuf = PathInfo::PhoneMemoryRootPath ().Left( 1 );
       
   377 
       
   378     TInt errorCode( KErrNotFound );
       
   379     if ( driveLetterBuf.Length() > 0 )
       
   380         {
       
   381         LOGSTRING( "CDiagInternalMemory::DoRunTestL, driveLetterBuf ok" );
       
   382         TChar driveLetter = driveLetterBuf[0];
       
   383         errorCode = RFs::CharToDrive( driveLetter, phoneMemoryDriveNum );
       
   384         }
       
   385     else
       
   386         {
       
   387         LOGSTRING( "CDiagInternalMemory::DoRunTestL, driveLetterBuf empty" );
       
   388         }
       
   389             
       
   390     if ( errorCode != KErrNone )
       
   391         {        
       
   392         LOGSTRING( "CDiagInternalMemory::DoRunTestL, no drive" );               	
       
   393         ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );
       
   394         return;       			
       
   395        	}
       
   396         	                  
       
   397  
       
   398     User::LeaveIfError( iFs.Connect() );  // Connects a client process to the fileserver
       
   399     LOGSTRING( "CDiagInternalMemory::DoRunTestL, iFs connect" );
       
   400    // check disk space            		       		
       
   401     if ( SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, iBufw.MaxLength(), phoneMemoryDriveNum ) )
       
   402         {
       
   403         //disk is out of memory
       
   404         LOGSTRING( "CDiagInternalMemory::DoRunTestL, out of memory" );
       
   405         ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );	
       
   406         return;	
       
   407         }
       
   408     	 
       
   409     //Try to create a temp file for test	    		
       
   410     TFileName filePath;
       
   411     TDriveUnit unit( phoneMemoryDriveNum );
       
   412     errorCode = iFs.CreatePrivatePath( unit );
       
   413 		
       
   414     if ( ( errorCode != KErrNone ) && ( errorCode != KErrAlreadyExists ) )
       
   415         {
       
   416         LOGSTRING( "CDiagInternalMemory::DoRunTestL, CreatePrivatePath fail" );
       
   417         ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );	
       
   418         return;
       
   419         }
       
   420 			
       
   421     iFs.PrivatePath( filePath );
       
   422     filePath.Insert( 0, unit.Name() );
       
   423 								    		
       
   424     errorCode = iFile.Temp( iFs, filePath, iFileName, EFileWrite );
       
   425     LOGSTRING2( "CDiagInternalMemory::DoRunTestL, Temp err = %d", errorCode );
       
   426 											
       
   427     if ( errorCode != KErrNone )
       
   428         {
       
   429         //Temp file creation failed
       
   430         ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );
       
   431         return;
       
   432         }
       
   433     		
       
   434     // Temp file created, start the write test					
       
   435 							
       
   436     iBufw.Zero();
       
   437     iBufw.Copy( KText1 );
       
   438 			
       
   439     SetState( EWriting ); 
       
   440 		
       
   441     iFile.Write( iBufw, iStatus );
       
   442     SetActive();        
       
   443     
       
   444     //report test progress     	    
       
   445     if ( iCounter > 0 )
       
   446         {
       
   447         iCounter--;    
       
   448         ReportTestProgressL( KDiagInternalMemoryStepsMaxCount - iCounter );        
       
   449         }  
       
   450     }
       
   451 
       
   452 
       
   453 //---------------------------------------------------------------------------
       
   454 // CDiagInternalMemoryPlugin::DoStopAndCleanupL
       
   455 //---------------------------------------------------------------------------
       
   456 void CDiagInternalMemoryPlugin::DoStopAndCleanupL()
       
   457     {
       
   458     switch ( iState )
       
   459         {
       
   460         case EWriting: 
       
   461             iFile.Close();
       
   462             iFs.Delete( iFileName ); // delete the file created by Temp									
       
   463             iFs.Close();
       
   464             break;
       
   465     		
       
   466         case EReading:
       
   467             iFile2.Close();	
       
   468             iFs.Delete( iFileName ); // delete the file created by Temp						
       
   469             iFs.Close();   		
       
   470             break;
       
   471     		 
       
   472         case EIdle:
       
   473             iFs.Close();
       
   474             break;
       
   475     	    
       
   476         default:
       
   477             ASSERT ( EFalse );      //this should never happen
       
   478             break;
       
   479         }
       
   480         
       
   481 	if ( iWaitDialog )
       
   482 	delete iWaitDialog;   
       
   483     idialogOn = EFalse;
       
   484 	idialogDismissed = EFalse;  
       
   485        
       
   486     SetState( EIdle );
       
   487     }
       
   488 
       
   489 
       
   490 // ----------------------------------------------------------------------------
       
   491 // CDiagExternalMediaCardPlugin::ShowProgressNoteL
       
   492 //
       
   493 // Progress Note
       
   494 // ----------------------------------------------------------------------------
       
   495 
       
   496 void CDiagInternalMemoryPlugin::ShowProgressNoteL()
       
   497     {
       
   498 		if ( iWaitDialog )
       
   499 		    {
       
   500 		    delete iWaitDialog;
       
   501 		    iWaitDialog = NULL;
       
   502 		    }
       
   503 
       
   504 		                    
       
   505 		// WAIT NOTE DIALOG
       
   506 		iWaitDialog = new (ELeave) CAknWaitDialog(
       
   507 									(REINTERPRET_CAST(CEikDialog**, &iWaitDialog)), 
       
   508 									ETrue);
       
   509 
       
   510 		iWaitDialog->PrepareLC(R_INTMEM_PLUGIN_WAIT_NOTE);
       
   511 		iWaitDialog->SetCallback(this);
       
   512 		iWaitDialog->RunLD();
       
   513 		idialogOn = ETrue;
       
   514 		LOGSTRING("CDiagInternalMemoryPlugin::ShowProgressNoteL()");
       
   515 
       
   516     }
       
   517 
       
   518 //*********************************************************
       
   519 // CallBack from AKnWaitDialog when Cancel is pressed
       
   520 //*********************************************************
       
   521 
       
   522 void CDiagInternalMemoryPlugin::DialogDismissedL( TInt aButtonId )
       
   523 	{
       
   524 		 LOGSTRING2("CDiagInternalMemoryPlugin::DialogDismissedL() = %d",aButtonId);
       
   525 		 
       
   526 		 if (aButtonId == ECBACmdCancel && idialogOn) 
       
   527 		 {
       
   528 		 // cancel the tests based on which point the dialog is dismissed
       
   529 		 LOGSTRING2("CDiagInternalMemoryPlugin::DialogDismissed @ iState= %d",iState);
       
   530 		 if (iState == EReading)
       
   531 	     iFile.ReadCancel(iStatus);
       
   532 		
       
   533 	     iWaitDialog = NULL;
       
   534 	     idialogOn = EFalse;
       
   535 	     idialogDismissed = ETrue;      
       
   536 		 }
       
   537 	}    
       
   538 
       
   539 void CDiagInternalMemoryPlugin::ReportResultToPluginL(CDiagResultsDatabaseItem::TResult aResult)
       
   540 	{
       
   541 		// clear the dialogue only if dialog is running.    
       
   542 		if(idialogOn)    
       
   543 		iWaitDialog->ProcessFinishedL();
       
   544 		LOGSTRING("CDiagInternalMemoryPlugin::ReportResultToPluginL()");
       
   545 		CompleteTestL( aResult );
       
   546 	}
       
   547 	    
       
   548 //---------------------------------------------------------------------------
       
   549 // CDiagInternalMemoryPlugin::SetState()
       
   550 //---------------------------------------------------------------------------
       
   551 void CDiagInternalMemoryPlugin::SetState( TStates aState )
       
   552     {
       
   553     iState = aState;
       
   554     }
       
   555     
       
   556     
       
   557 // ADO & Platformization Changes
       
   558 TBool CDiagInternalMemoryPlugin::ShowMessageQueryL( TInt aResourceId, TInt &aButtonId  )
       
   559     {
       
   560     LOGSTRING( "CDiagAudioPlugin::ShowMessageQueryL IN" )
       
   561     CAknMessageQueryDialog* dlg    = NULL;
       
   562     TBool                   result = EFalse;
       
   563 
       
   564     // Create CAknMessageQueryDialog instance
       
   565     dlg = new ( ELeave ) CAknMessageQueryDialog();
       
   566 
       
   567     dlg->PrepareLC( aResourceId );
       
   568      
       
   569     CEikButtonGroupContainer& cba = dlg->ButtonGroupContainer();
       
   570 
       
   571         switch ( aResourceId )
       
   572             {
       
   573             case R_MESSAGEQUERY_TITLE_INTERNALMEMORY: 
       
   574          	   {
       
   575             	if ( SinglePluginExecution() )
       
   576         		{
       
   577         			cba.SetCommandSetL( R_INT_MEMORY_SOFTKEYS_OK_CANCEL );		
       
   578         		}
       
   579         	   else 
       
   580         	   	{	
       
   581                 	cba.SetCommandSetL( R_INT_MEMORY_SOFTKEYS_OK_SKIP );		
       
   582                 }
       
   583         	}
       
   584                 break;
       
   585 
       
   586             default:
       
   587                 break;
       
   588             }
       
   589         	
       
   590     result = RunWaitingDialogL( dlg, aButtonId );
       
   591 
       
   592     LOGSTRING3( "CDiagAudioPlugin::ShowMessageQueryL() OUT aButtonId=%d result=%d", aButtonId, result )
       
   593     return result;
       
   594     }
       
   595     
       
   596 // End of File