devicediagnostics/diagplugins/DiagInternalMemoryPlugin/src/diaginternalmemoryplugin.cpp
branchRCL_3
changeset 25 5b858729772b
equal deleted inserted replaced
24:6757f1e2efd2 25:5b858729772b
       
     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 // CDiagInternalMemoryPlugin::RunError
       
   311 // ---------------------------------------------------------------------------
       
   312 //
       
   313 TInt CDiagInternalMemoryPlugin::RunError( TInt aError )
       
   314 	{
       
   315 		LOGSTRING2( "CDiagInternalMemoryPlugin::RunError( %d )", aError )    
       
   316 		return KErrNone;
       
   317 	}
       
   318 	
       
   319 // ---------------------------------------------------------------------------
       
   320 // From CActive
       
   321 // CDiagInternalMemoryPlugin::DoCancel
       
   322 // ---------------------------------------------------------------------------
       
   323 void CDiagInternalMemoryPlugin::DoCancel()
       
   324     {     
       
   325     switch ( iState )
       
   326         {
       
   327         case EReading:
       
   328             iFile.ReadCancel(iStatus);
       
   329             break;
       
   330             
       
   331         default:
       
   332             // No action needed
       
   333             break;
       
   334         }    
       
   335     }    
       
   336 
       
   337 
       
   338 // ---------------------------------------------------------------------------
       
   339 // From CDiagTestPluginBase
       
   340 // CDiagInternalMemoryPlugin::DoRunTestL()
       
   341 // ---------------------------------------------------------------------------
       
   342 void CDiagInternalMemoryPlugin::DoRunTestL()
       
   343     {
       
   344     TInt aButtonId; // ADO & Platformization Changes
       
   345     iCounter = KDiagInternalMemoryStepsMaxCount;
       
   346     // ADO & Platformization Changes
       
   347     
       
   348     ShowMessageQueryL(R_MESSAGEQUERY_TITLE_INTERNALMEMORY,aButtonId);
       
   349     
       
   350     if(aButtonId == ECBACmdCancel)
       
   351     	{
       
   352     	ReportResultToPluginL( CDiagResultsDatabaseItem::ESkipped );
       
   353         return;
       
   354     	}
       
   355     
       
   356     if(aButtonId == ECBACmdSkip)
       
   357     	{
       
   358 		TInt confirmResult = 0;
       
   359             
       
   360         CAknDialog* dlg = ExecutionParam().Engine().
       
   361         CreateCommonDialogLC( EDiagCommonDialogConfirmSkipAll, NULL );
       
   362     
       
   363         if ( !RunWaitingDialogL( dlg, confirmResult ) )
       
   364             {
       
   365             return;
       
   366             }
       
   367         
       
   368         if ( confirmResult)
       
   369             {
       
   370             return;
       
   371             }
       
   372     	}
       
   373     // Changes Ends
       
   374     
       
   375     
       
   376     //Start my test
       
   377     
       
   378     ShowProgressNoteL();
       
   379     
       
   380     SetState( EIdle );
       
   381         	            	  
       
   382     //check the drive number for internal memory
       
   383     TInt phoneMemoryDriveNum( 0 );
       
   384     // If path length is zero, driveLetterBuf will be empty.
       
   385     TBuf<1> driveLetterBuf = PathInfo::PhoneMemoryRootPath ().Left( 1 );
       
   386 
       
   387     TInt errorCode( KErrNotFound );
       
   388     if ( driveLetterBuf.Length() > 0 )
       
   389         {
       
   390         LOGSTRING( "CDiagInternalMemory::DoRunTestL, driveLetterBuf ok" );
       
   391         TChar driveLetter = driveLetterBuf[0];
       
   392         errorCode = RFs::CharToDrive( driveLetter, phoneMemoryDriveNum );
       
   393         }
       
   394     else
       
   395         {
       
   396         LOGSTRING( "CDiagInternalMemory::DoRunTestL, driveLetterBuf empty" );
       
   397         }
       
   398             
       
   399     if ( errorCode != KErrNone )
       
   400         {        
       
   401         LOGSTRING( "CDiagInternalMemory::DoRunTestL, no drive" );               	
       
   402         ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );
       
   403         return;       			
       
   404        	}
       
   405         	                  
       
   406  
       
   407     User::LeaveIfError( iFs.Connect() );  // Connects a client process to the fileserver
       
   408     LOGSTRING( "CDiagInternalMemory::DoRunTestL, iFs connect" );
       
   409    // check disk space            		       		
       
   410     if ( SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, iBufw.MaxLength(), phoneMemoryDriveNum ) )
       
   411         {
       
   412         //disk is out of memory
       
   413         LOGSTRING( "CDiagInternalMemory::DoRunTestL, out of memory" );
       
   414         ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );	
       
   415         return;	
       
   416         }
       
   417     	 
       
   418     //Try to create a temp file for test	    		
       
   419     TFileName filePath;
       
   420     TDriveUnit unit( phoneMemoryDriveNum );
       
   421     errorCode = iFs.CreatePrivatePath( unit );
       
   422 		
       
   423     if ( ( errorCode != KErrNone ) && ( errorCode != KErrAlreadyExists ) )
       
   424         {
       
   425         LOGSTRING( "CDiagInternalMemory::DoRunTestL, CreatePrivatePath fail" );
       
   426         ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );	
       
   427         return;
       
   428         }
       
   429 			
       
   430     iFs.PrivatePath( filePath );
       
   431     filePath.Insert( 0, unit.Name() );
       
   432 								    		
       
   433     errorCode = iFile.Temp( iFs, filePath, iFileName, EFileWrite );
       
   434     LOGSTRING2( "CDiagInternalMemory::DoRunTestL, Temp err = %d", errorCode );
       
   435 											
       
   436     if ( errorCode != KErrNone )
       
   437         {
       
   438         //Temp file creation failed
       
   439         ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );
       
   440         return;
       
   441         }
       
   442     		
       
   443     // Temp file created, start the write test					
       
   444 							
       
   445     iBufw.Zero();
       
   446     iBufw.Copy( KText1 );
       
   447 			
       
   448     SetState( EWriting ); 
       
   449 		
       
   450     iFile.Write( iBufw, iStatus );
       
   451     SetActive();        
       
   452     
       
   453     //report test progress     	    
       
   454     if ( iCounter > 0 )
       
   455         {
       
   456         iCounter--;    
       
   457         ReportTestProgressL( KDiagInternalMemoryStepsMaxCount - iCounter );        
       
   458         }  
       
   459     }
       
   460 
       
   461 
       
   462 //---------------------------------------------------------------------------
       
   463 // CDiagInternalMemoryPlugin::DoStopAndCleanupL
       
   464 //---------------------------------------------------------------------------
       
   465 void CDiagInternalMemoryPlugin::DoStopAndCleanupL()
       
   466     {
       
   467     switch ( iState )
       
   468         {
       
   469         case EWriting: 
       
   470             iFile.Close();
       
   471             iFs.Delete( iFileName ); // delete the file created by Temp									
       
   472             iFs.Close();
       
   473             break;
       
   474     		
       
   475         case EReading:
       
   476             iFile2.Close();	
       
   477             iFs.Delete( iFileName ); // delete the file created by Temp						
       
   478             iFs.Close();   		
       
   479             break;
       
   480     		 
       
   481         case EIdle:
       
   482             iFs.Close();
       
   483             break;
       
   484     	    
       
   485         default:
       
   486             ASSERT ( EFalse );      //this should never happen
       
   487             break;
       
   488         }
       
   489         
       
   490 	if ( iWaitDialog )
       
   491 	delete iWaitDialog;   
       
   492     idialogOn = EFalse;
       
   493 	idialogDismissed = EFalse;  
       
   494        
       
   495     SetState( EIdle );
       
   496     }
       
   497 
       
   498 
       
   499 // ----------------------------------------------------------------------------
       
   500 // CDiagExternalMediaCardPlugin::ShowProgressNoteL
       
   501 //
       
   502 // Progress Note
       
   503 // ----------------------------------------------------------------------------
       
   504 
       
   505 void CDiagInternalMemoryPlugin::ShowProgressNoteL()
       
   506     {
       
   507 		if ( iWaitDialog )
       
   508 		    {
       
   509 		    delete iWaitDialog;
       
   510 		    iWaitDialog = NULL;
       
   511 		    }
       
   512 
       
   513 		                    
       
   514 		// WAIT NOTE DIALOG
       
   515 		iWaitDialog = new (ELeave) CAknWaitDialog(
       
   516 									(REINTERPRET_CAST(CEikDialog**, &iWaitDialog)), 
       
   517 									ETrue);
       
   518 
       
   519 		iWaitDialog->PrepareLC(R_INTMEM_PLUGIN_WAIT_NOTE);
       
   520 		iWaitDialog->SetCallback(this);
       
   521 		iWaitDialog->RunLD();
       
   522 		idialogOn = ETrue;
       
   523 		LOGSTRING("CDiagInternalMemoryPlugin::ShowProgressNoteL()");
       
   524 
       
   525     }
       
   526 
       
   527 //*********************************************************
       
   528 // CallBack from AKnWaitDialog when Cancel is pressed
       
   529 //*********************************************************
       
   530 
       
   531 void CDiagInternalMemoryPlugin::DialogDismissedL( TInt aButtonId )
       
   532 	{
       
   533 		 LOGSTRING2("CDiagInternalMemoryPlugin::DialogDismissedL() = %d",aButtonId);
       
   534 		 
       
   535 		 if (aButtonId == ECBACmdCancel && idialogOn) 
       
   536 		 {
       
   537 		 // cancel the tests based on which point the dialog is dismissed
       
   538 		 LOGSTRING2("CDiagInternalMemoryPlugin::DialogDismissed @ iState= %d",iState);
       
   539 		 if (iState == EReading)
       
   540 	     iFile.ReadCancel(iStatus);
       
   541 		
       
   542 	     iWaitDialog = NULL;
       
   543 	     idialogOn = EFalse;
       
   544 	     idialogDismissed = ETrue;      
       
   545 		 }
       
   546 	}    
       
   547 
       
   548 void CDiagInternalMemoryPlugin::ReportResultToPluginL(CDiagResultsDatabaseItem::TResult aResult)
       
   549 	{
       
   550 		// clear the dialogue only if dialog is running.    
       
   551 		if(idialogOn)    
       
   552 		iWaitDialog->ProcessFinishedL();
       
   553 		LOGSTRING("CDiagInternalMemoryPlugin::ReportResultToPluginL()");
       
   554 		CompleteTestL( aResult );
       
   555 	}
       
   556 	    
       
   557 //---------------------------------------------------------------------------
       
   558 // CDiagInternalMemoryPlugin::SetState()
       
   559 //---------------------------------------------------------------------------
       
   560 void CDiagInternalMemoryPlugin::SetState( TStates aState )
       
   561     {
       
   562     iState = aState;
       
   563     }
       
   564     
       
   565     
       
   566 // ADO & Platformization Changes
       
   567 TBool CDiagInternalMemoryPlugin::ShowMessageQueryL( TInt aResourceId, TInt &aButtonId  )
       
   568     {
       
   569     LOGSTRING( "CDiagAudioPlugin::ShowMessageQueryL IN" )
       
   570     CAknMessageQueryDialog* dlg    = NULL;
       
   571     TBool                   result = EFalse;
       
   572 
       
   573     // Create CAknMessageQueryDialog instance
       
   574     dlg = new ( ELeave ) CAknMessageQueryDialog();
       
   575 
       
   576     dlg->PrepareLC( aResourceId );
       
   577      
       
   578     CEikButtonGroupContainer& cba = dlg->ButtonGroupContainer();
       
   579 
       
   580         switch ( aResourceId )
       
   581             {
       
   582             case R_MESSAGEQUERY_TITLE_INTERNALMEMORY: 
       
   583          	   {
       
   584             	if ( SinglePluginExecution() )
       
   585         		{
       
   586         			cba.SetCommandSetL( R_INT_MEMORY_SOFTKEYS_OK_CANCEL );		
       
   587         		}
       
   588         	   else 
       
   589         	   	{	
       
   590                 	cba.SetCommandSetL( R_INT_MEMORY_SOFTKEYS_OK_SKIP );		
       
   591                 }
       
   592         	}
       
   593                 break;
       
   594 
       
   595             default:
       
   596                 break;
       
   597             }
       
   598         	
       
   599     result = RunWaitingDialogL( dlg, aButtonId );
       
   600 
       
   601     LOGSTRING3( "CDiagAudioPlugin::ShowMessageQueryL() OUT aButtonId=%d result=%d", aButtonId, result )
       
   602     return result;
       
   603     }
       
   604     
       
   605 // End of File