omadcmoadapters/extmemctrl/src/extmemctrldcmoadapter.cpp
changeset 47 d316aecb87fd
child 52 6e38e48ee756
equal deleted inserted replaced
46:b9b00b134b0d 47:d316aecb87fd
       
     1 /*
       
     2 * Copyright (c) 2009 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:  ExtMemCtrl plug-in adapter for DCMO
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <f32file.h> 
       
    20 #include <driveinfo.h>
       
    21 #include <barsread.h> 
       
    22 #include <barsc2.h>
       
    23 #include <f32file.h> 
       
    24 #include <data_caging_path_literals.hrh>
       
    25 #include <DevManInternalCRKeys.h>
       
    26 #include <centralrepository.h>
       
    27 #include "extmemctrldcmoadapter.h"
       
    28 #include "hbtextresolversymbian.h"
       
    29 
       
    30 _LIT( KdcmoResourceFileName, "deviceupdates_" );	
       
    31 _LIT( KdcmoResourceFilePath, "z:/resource/qt/translations/" );	
       
    32 _LIT( KExtMemCtrlProperty, "ExternalMemory");
       
    33 _LIT( KExtMemCtrlDescription, "Used to enable/disable the ExtMem");
       
    34 
       
    35 
       
    36 // Construction and destruction functions
       
    37 
       
    38 // ----------------------------------------------------------------------------------------
       
    39 // CExtMemCtrlDCMOAdapter::NewL
       
    40 // ----------------------------------------------------------------------------------------
       
    41 CExtMemCtrlDCMOAdapter* CExtMemCtrlDCMOAdapter::NewL(TAny* aParams)
       
    42 	{
       
    43 		CExtMemCtrlDCMOAdapter* self=new(ELeave) CExtMemCtrlDCMOAdapter(aParams);  
       
    44 		CleanupStack::PushL(self);
       
    45 		self->ConstructL(); 
       
    46 		CleanupStack::Pop();
       
    47 		return self;
       
    48 	}
       
    49 
       
    50 // ----------------------------------------------------------------------------------------
       
    51 // CExtMemCtrlDCMOAdapter::~CExtMemCtrlDCMOAdapter
       
    52 // ----------------------------------------------------------------------------------------
       
    53 CExtMemCtrlDCMOAdapter::~CExtMemCtrlDCMOAdapter()
       
    54 	{
       
    55 		delete iProperty;
       
    56 		iProperty = NULL;
       
    57 		delete iDescription;
       
    58 		iDescription = NULL;
       
    59 	}
       
    60 
       
    61 // ----------------------------------------------------------------------------------------
       
    62 // CExtMemCtrlDCMOAdapter::CExtMemCtrlDCMOAdapter
       
    63 // ----------------------------------------------------------------------------------------
       
    64 CExtMemCtrlDCMOAdapter::CExtMemCtrlDCMOAdapter(TAny* aInitParams)
       
    65 :  iInitParams((CDCMOInterface::TDCMOInterfaceInitParams*)aInitParams)
       
    66 	{
       
    67 	// See ConstructL() for initialisation completion.
       
    68 	}
       
    69 
       
    70 // ----------------------------------------------------------------------------------------
       
    71 // CExtMemCtrlDCMOAdapter::ConstructL
       
    72 // ----------------------------------------------------------------------------------------
       
    73 void CExtMemCtrlDCMOAdapter::ConstructL()
       
    74 {	
       
    75 	// Safely complete the initialization of the constructed object	
       
    76 	if(iInitParams->descriptor)
       
    77 		iProperty =  (iInitParams->descriptor)->AllocL();
       
    78 	else
       
    79 		iProperty = KExtMemCtrlProperty().AllocL();
       
    80 	iDescription = KExtMemCtrlDescription().AllocL();
       
    81 }
       
    82 
       
    83 // Implementation of CDCMOInterface
       
    84 
       
    85 // ----------------------------------------------------------------------------------------
       
    86 // CExtMemCtrlDCMOAdapter::GetDCMOPluginIntAttributeValueL
       
    87 // Gets the integer attribute value.
       
    88 // ----------------------------------------------------------------------------------------
       
    89 TDCMOStatus  CExtMemCtrlDCMOAdapter::GetDCMOPluginIntAttributeValueL(TDCMONode aId, TInt& aValue)
       
    90 {
       
    91 	TDCMOStatus status(EDcmoSuccess);
       
    92 	TInt err(KErrNone);
       
    93 	
       
    94 	switch(aId)
       
    95 	{
       
    96 		case EGroup: {
       
    97 									aValue = EHardware;
       
    98 								}
       
    99 						break;		
       
   100 		case EAttached:	{
       
   101 						aValue = 0;
       
   102 						RFs fsMemoryCard;
       
   103                   		err = fsMemoryCard.Connect();
       
   104                   		if ( err != KErrNone )
       
   105                   		{
       
   106                   			status = EDcmoFail;
       
   107                   		}
       
   108                   		TDriveInfo dInfo;
       
   109 						TVolumeInfo vInfo;
       
   110     					TInt error = fsMemoryCard.Drive( dInfo, EDriveF );
       
   111      					if( error == KErrNone )
       
   112          				{
       
   113          					error = fsMemoryCard.Volume( vInfo, EDriveF );
       
   114          					if( error == KErrNone )
       
   115              				{
       
   116              					aValue = 1;
       
   117              				}
       
   118          				}										
       
   119 						fsMemoryCard.Close();  
       
   120 						}
       
   121 						break;
       
   122 		case EEnabled:{
       
   123 			            RFs fsMemoryCard;
       
   124                   err = fsMemoryCard.Connect();
       
   125                   if ( err != KErrNone )
       
   126                   {
       
   127                   	status = EDcmoFail;
       
   128                   }
       
   129                       
       
   130                   TDriveInfo  info;
       
   131                   err=fsMemoryCard.Drive(info, EDriveF);
       
   132  //               DBG_ARGS8( _S8("ExtMem err =  %d info.iType = %d"), err, info.iType );
       
   133                                        
       
   134                   if (info.iType == EMediaNotPresent || err != KErrNone ||info.iType == EMediaUnknown )
       
   135                   {
       
   136                     aValue = 0;
       
   137                   }
       
   138                   else
       
   139                   { 
       
   140                     aValue = 1;
       
   141                   }                        
       
   142                   fsMemoryCard.Close();          
       
   143             		  }
       
   144 						break;		
       
   145 		case EDenyUserEnable:	{
       
   146 										aValue = 1;
       
   147 									}
       
   148 						break;
       
   149 		case ENotifyUser:	{
       
   150 											aValue = 1;
       
   151 											}
       
   152 						break;	
       
   153 		default :
       
   154 						status = 	EDcmoNotFound;		
       
   155 	}	
       
   156 	return status;
       
   157 }
       
   158 
       
   159 // ----------------------------------------------------------------------------------------
       
   160 // CExtMemCtrlDCMOAdapter::GetDCMOPluginStrAttributeValueL
       
   161 // Gets the string attribute value.
       
   162 // ----------------------------------------------------------------------------------------
       
   163 TDCMOStatus  CExtMemCtrlDCMOAdapter::GetDCMOPluginStrAttributeValueL(TDCMONode aId, TDes& aStrValue) 
       
   164 {
       
   165 	TDCMOStatus status(EDcmoSuccess);		
       
   166 	switch(aId)
       
   167 	{
       
   168 		case EProperty: 	aStrValue = *iProperty;
       
   169 							break;		
       
   170 		case EDescription:	aStrValue = *iDescription;
       
   171 							break;
       
   172 		default :	
       
   173 						status = EDcmoNotFound;	
       
   174 	}
       
   175 	return status;
       
   176 }
       
   177 
       
   178 // ----------------------------------------------------------------------------------------
       
   179 // CExtMemCtrlDCMOAdapter::SetDCMOPluginIntAttributeValueL
       
   180 // Sets the integer attribute value.
       
   181 // ----------------------------------------------------------------------------------------
       
   182 TDCMOStatus  CExtMemCtrlDCMOAdapter::SetDCMOPluginIntAttributeValueL(TDCMONode aId, TInt aValue)
       
   183 {
       
   184 	TDCMOStatus status(EDcmoFail);
       
   185 	TInt err(KErrNone);
       
   186 	
       
   187 	switch(aId)
       
   188 	{
       
   189 		case EDenyUserEnable:
       
   190 							break;
       
   191 		case ENotifyUser:
       
   192 							break;
       
   193 		case EEnable:	{
       
   194 			        			RFs fsMemoryCard;
       
   195               			err = fsMemoryCard.Connect();
       
   196               			if ( err != KErrNone )
       
   197                			{
       
   198                 		  return status ;
       
   199                			}
       
   200                			TBuf<255> fsysname;
       
   201                			fsysname.Zero();
       
   202                			if (!aValue)
       
   203                			{               	
       
   204                 			fsMemoryCard.FileSystemName(fsysname,EDriveF);
       
   205                 			TRequestStatus stat;
       
   206                 			fsMemoryCard.NotifyDismount(EDriveF, stat, EFsDismountForceDismount);
       
   207                 			User::WaitForRequest(stat);
       
   208                			 	//err= fsMemoryCard.DismountFileSystem(fsysname, EDriveF);
       
   209                 			//if (err == KErrNone)
       
   210                    		status =EDcmoSuccess;                   
       
   211                			}
       
   212                			else
       
   213                			{
       
   214                	 			TInt err(fsMemoryCard.FileSystemName(fsysname,EDriveF));
       
   215                	 			if (err != KErrNone && !fsysname.Length()) 
       
   216                	 			{
       
   217                	 				_LIT( KFmgrFatFSName, "Fat" );
       
   218                	  			err = fsMemoryCard.MountFileSystem( KFmgrFatFSName, EDriveF );
       
   219                	 			} 
       
   220                    		status = EDcmoSuccess;                                 	
       
   221                			} 
       
   222                			fsMemoryCard.Close();
       
   223 			          		CRepository *rep = NULL;
       
   224 		            		TRAPD( err1, rep = CRepository::NewL( KCRUidDeviceManagementInternalKeys )) ;
       
   225 		            		if(!err1) 
       
   226 		              		rep->Set( KDevManMemCardCtrl, aValue ); 		              
       
   227 		              	delete rep;
       
   228 		              	rep = NULL; 							
       
   229 		              }
       
   230 						break;
       
   231 		default :
       
   232 							status = EDcmoNotFound;
       
   233 	}	
       
   234 	return status;
       
   235 }
       
   236 
       
   237 // ----------------------------------------------------------------------------------------
       
   238 // CExtMemCtrlDCMOAdapter::SetDCMOPluginStrAttributeValueL
       
   239 // Sets the string attribute value.
       
   240 // ----------------------------------------------------------------------------------------
       
   241 TDCMOStatus  CExtMemCtrlDCMOAdapter::SetDCMOPluginStrAttributeValueL(TDCMONode /* aId */, const TDes& /* aStrValue */)
       
   242 {
       
   243 	// Nothing to do
       
   244 	TDCMOStatus status(EDcmoNotSupported);	
       
   245 	return status;	
       
   246 }
       
   247 
       
   248 // ----------------------------------------------------------------------------------------
       
   249 // CExtMemCtrlDCMOAdapter::GetLocalizedNameL
       
   250 // returns the localized plug-in name.
       
   251 // ----------------------------------------------------------------------------------------
       
   252 void CExtMemCtrlDCMOAdapter::GetLocalizedNameL (HBufC*& aLocName)
       
   253 {	
       
   254 	TBool result = HbTextResolverSymbian::Init(KdcmoResourceFileName, KdcmoResourceFilePath );					
       
   255 	_LIT(KTextExtMemory, "txt_device_update_info_external_memory_card");
       
   256 	aLocName = HbTextResolverSymbian::LoadL(KTextExtMemory);	
       
   257 }