omads/omadsextensions/adapters/agenda/src/nsmlagendadataprovider.cpp
branchRCL_3
changeset 24 8e7494275d3a
parent 8 ad0f53516d84
child 25 4f0867e42d62
--- a/omads/omadsextensions/adapters/agenda/src/nsmlagendadataprovider.cpp	Thu Aug 19 09:41:17 2010 +0300
+++ b/omads/omadsextensions/adapters/agenda/src/nsmlagendadataprovider.cpp	Tue Aug 31 15:05:37 2010 +0300
@@ -17,21 +17,21 @@
 
 
 // INCLUDE FILES
+#include "nsmlagendadataprovider.h"
+#include "nsmlagendadatastore.h"
+#include "nsmldebug.h"
+#include "nsmldsimpluids.h"
 #include <SmlDataProvider.h>
 #include <ecom.h>
 #include <barsc.h>
 #include <bautils.h>
 #include <NSmlAgendaDataStore_1_1_2.rsg>
+#include <NSmlAgendaDataStore_1_2.rsg>
 #include <SmlDataFormat.h>
 #include <implementationproxy.h>
 #include <data_caging_path_literals.hrh>
 #include <e32property.h>
 #include <DataSyncInternalPSKeys.h>
-#include <nsmldebug.h>
-#include "nsmlagendadataprovider.h"
-#include "nsmlagendadatastore.h"
-#include "nsmlagendadebug.h"
-#include "nsmldsimpluids.h"
 
 // ====================================== MEMBER FUNCTIONS ========================================
 
@@ -43,8 +43,8 @@
 //
 CNSmlAgendaDataProvider::CNSmlAgendaDataProvider()
 	{
-	FLOG(_L("CNSmlAgendaDataProvider::CNSmlAgendaDataProvider(): BEGIN"));
-	FLOG(_L("CNSmlAgendaDataProvider::CNSmlAgendaDataProvider(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::CNSmlAgendaDataProvider(): BEGIN");
+	_DBG_FILE("CNSmlAgendaDataProvider::CNSmlAgendaDataProvider(): END");
 	}
 
 // ------------------------------------------------------------------------------------------------
@@ -54,9 +54,11 @@
 //
 void CNSmlAgendaDataProvider::ConstructL( )
 	{
-	FLOG(_L("CNSmlAgendaDataProvider::NewL: BEGIN"));
+	_DBG_FILE("CNSmlAgendaDataProvider::NewL: BEGIN");
 	iAgnDataStore = CNSmlAgendaDataStore::NewL();
-	FLOG(_L("CNSmlAgendaDataProvider::NewL: END"));
+	iStringPool.OpenL();
+	User::LeaveIfError( iSession.Connect() );
+	_DBG_FILE("CNSmlAgendaDataProvider::NewL: BEGIN");
 	}
 
 // ------------------------------------------------------------------------------------------------
@@ -66,12 +68,12 @@
 //
 CNSmlAgendaDataProvider* CNSmlAgendaDataProvider::NewL()
 	{
-	FLOG(_L("CNSmlAgendaDataProvider::NewL: BEGIN"));
+	_DBG_FILE("CNSmlAgendaDataProvider::NewL: BEGIN");
 	CNSmlAgendaDataProvider* self = new ( ELeave ) CNSmlAgendaDataProvider();
 	CleanupStack::PushL( self );
 	self->ConstructL();
 	CleanupStack::Pop( self );
-	FLOG(_L("CNSmlAgendaDataProvider::NewL: END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::NewL: BEGIN");
 	return self;
 	}
 
@@ -82,12 +84,14 @@
 //
 CNSmlAgendaDataProvider::~CNSmlAgendaDataProvider()
 	{
-	FLOG(_L("CNSmlAgendaDataProvider::~CNSmlAgendaDataProvider(): BEGIN"));
+	_DBG_FILE("CNSmlAgendaDataProvider::~CNSmlAgendaDataProvider(): BEGIN");
+	delete iAgnDataStore;
+	iSession.Close();
 	delete iDSFormat;
-	delete iAgnDataStore;
+	iStringPool.Close();
 	iFilterArray.ResetAndDestroy();
 	iFilterArray.Close();
-	FLOG(_L("CNSmlAgendaDataProvider::~CNSmlAgendaDataProvider(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::~CNSmlAgendaDataProvider(): END");
 	}
 
 // ------------------------------------------------------------------------------------------------
@@ -97,8 +101,8 @@
 //
 void CNSmlAgendaDataProvider::DoOnFrameworkEvent( TSmlFrameworkEvent /*aEvent*/, TInt /*aParam1*/, TInt /*aParam2*/ )
     {
-	FLOG(_L("CNSmlAgendaDataProvider::DoOnFrameworkEvent: BEGIN"));
-	FLOG(_L("CNSmlAgendaDataProvider::DoOnFrameworkEvent: END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoOnFrameworkEvent: BEGIN");
+	_DBG_FILE("CNSmlAgendaDataProvider::DoOnFrameworkEvent: END");
     }
 
 // ------------------------------------------------------------------------------------------------
@@ -108,13 +112,13 @@
 //
 TBool CNSmlAgendaDataProvider::DoSupportsOperation( TUid aOpId ) const
     {
-	FLOG(_L("CNSmlAgendaDataProvider::DoSupportsOperation: BEGIN"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoSupportsOperation: BEGIN");
 	if ( aOpId == KUidSmlSupportMultipleStores )
 		{
-		FLOG(_L("CNSmlAgendaDataProvider::DoSupportsOperation: END"));
+		_DBG_FILE("CNSmlAgendaDataProvider::DoSupportsOperation: END");
 		return ETrue;
 		}
-	FLOG(_L("CNSmlAgendaDataProvider::DoSupportsOperation: END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoSupportsOperation: END");
 	return EFalse;
     }
 
@@ -125,17 +129,16 @@
 //
 const CSmlDataStoreFormat& CNSmlAgendaDataProvider::DoStoreFormatL()
     {
-	FLOG(_L("CNSmlAgendaDataProvider::DoStoreFormatL(): BEGIN"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoStoreFormatL(): BEGIN");
 	
 	if ( iDSFormat )
 		{
        	delete iDSFormat;
        	iDSFormat = NULL;
 		}
-	// RD_MULTICAL
-	iDSFormat = iAgnDataStore->StoreFormatL();
-	// RD_MULTICAL
-	return *iDSFormat;
+	iDSFormat = DoOwnStoreFormatL();
+	
+    return *iDSFormat;
     }
 
 // ------------------------------------------------------------------------------------------------
@@ -145,8 +148,8 @@
 //
 CDesCArray* CNSmlAgendaDataProvider::DoListStoresLC()
     {
-	FLOG(_L("CNSmlAgendaDataProvider::DoListStoresLC(): BEGIN"));
-	FLOG(_L("CNSmlAgendaDataProvider::DoListStoresLC(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoListStoresLC(): BEGIN");
+	_DBG_FILE("CNSmlAgendaDataProvider::DoListStoresLC(): END");
 	return iAgnDataStore->DoListAgendaFilesLC();
     }
 
@@ -157,8 +160,8 @@
 //
 const TDesC& CNSmlAgendaDataProvider::DoDefaultStoreL()
     {
-	FLOG(_L("CNSmlAgendaDataProvider::DoDefaultStoreL(): BEGIN"));
-	FLOG(_L("CNSmlAgendaDataProvider::DoDefaultStoreL(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoDefaultStoreL(): BEGIN");
+	_DBG_FILE("CNSmlAgendaDataProvider::DoDefaultStoreL(): END");
 	return iAgnDataStore->DoGetDefaultFileNameL();
     }
 
@@ -169,10 +172,10 @@
 //
 CSmlDataStore* CNSmlAgendaDataProvider::DoNewStoreInstanceLC()
     {
-	FLOG(_L("CNSmlAgendaDataProvider::DoNewStoreInstanceLC(): BEGIN"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoNewStoreInstanceLC(): BEGIN");
 	CNSmlAgendaDataStore* newStore = CNSmlAgendaDataStore::NewL();
 	CleanupStack::PushL( newStore );
-	FLOG(_L("CNSmlAgendaDataProvider::DoNewStoreInstanceLC(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoNewStoreInstanceLC(): END");
 	return newStore;
     } 
 
@@ -183,8 +186,8 @@
 const RPointerArray<CSyncMLFilter>& CNSmlAgendaDataProvider::DoSupportedServerFiltersL()
 	{
 	// This method returns empty array. It means that this Data Provider does not support filtering
-	FLOG(_L("CNSmlAgendaDataProvider::DoSupportedServerFiltersL(): BEGIN"));
-	FLOG(_L("CNSmlAgendaDataProvider::DoSupportedServerFiltersL(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoSupportedServerFiltersL(): BEGIN");
+	_DBG_FILE("CNSmlAgendaDataProvider::DoSupportedServerFiltersL(): END");
 	return iFilterArray;
 	}
 
@@ -194,9 +197,9 @@
 // ------------------------------------------------------------------------------------------------
 void CNSmlAgendaDataProvider::DoCheckSupportedServerFiltersL( const CSmlDataStoreFormat& /*aServerDataStoreFormat*/, RPointerArray<CSyncMLFilter>& /*aFilters*/, TSyncMLFilterChangeInfo& /*aChangeInfo*/ )
 	{
-	FLOG(_L("CNSmlAgendaDataProvider::DoCheckSupportedServerFiltersL(): BEGIN"));
-	FLOG(_L("CNSmlAgendaDataProvider::DoCheckSupportedServerFiltersL(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoCheckSupportedServerFiltersL(): BEGIN");
 	User::Leave( KErrNotSupported );
+	_DBG_FILE("CNSmlAgendaDataProvider::DoCheckSupportedServerFiltersL(): END");
 	}
 
 // ------------------------------------------------------------------------------------------------
@@ -205,9 +208,9 @@
 // ------------------------------------------------------------------------------------------------
 void CNSmlAgendaDataProvider::DoCheckServerFiltersL( RPointerArray<CSyncMLFilter>& /*aFilters*/, TSyncMLFilterChangeInfo& /*aChangeInfo*/ )
 	{
-	FLOG(_L("CNSmlAgendaDataProvider::DoCheckServerFiltersL(): BEGIN"));
-	FLOG(_L("CNSmlAgendaDataProvider::DoCheckServerFiltersL(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoCheckServerFiltersL(): BEGIN");
 	User::Leave( KErrNotSupported );
+	_DBG_FILE("CNSmlAgendaDataProvider::DoCheckServerFiltersL(): END");
 	}
 
 // ------------------------------------------------------------------------------------------------
@@ -216,9 +219,9 @@
 // ------------------------------------------------------------------------------------------------
 HBufC* CNSmlAgendaDataProvider::DoGenerateRecordFilterQueryLC( const RPointerArray<CSyncMLFilter>& /*aFilters*/, TSyncMLFilterMatchType /*aMatch*/, TDes& /*aFilterMimeType*/, TSyncMLFilterType& /*aFilterType*/, TDesC& /*aStoreName*/ )
 	{
-	FLOG(_L("CNSmlAgendaDataProvider::DoGenerateRecordFilterQueryLC(): BEGIN"));
-	FLOG(_L("CNSmlAgendaDataProvider::DoGenerateRecordFilterQueryLC(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoGenerateRecordFilterQueryLC(): BEGIN");
 	User::Leave( KErrNotSupported );
+	_DBG_FILE("CNSmlAgendaDataProvider::DoGenerateRecordFilterQueryLC(): END");
 	return NULL;
 	}
 	
@@ -228,9 +231,53 @@
 // ------------------------------------------------------------------------------------------------
 void CNSmlAgendaDataProvider::DoGenerateFieldFilterQueryL( const RPointerArray<CSyncMLFilter>& /*aFilters*/, TDes& /*aFilterMimeType*/, RPointerArray<CSmlDataProperty>& /*aProperties*/, TDesC& /*aStoreName*/ )
 	{
-	FLOG(_L("CNSmlAgendaDataProvider::DoGenerateFieldFilterQueryL(): BEGIN"));
-	FLOG(_L("CNSmlAgendaDataProvider::DoGenerateFieldFilterQueryL(): END"));
+	_DBG_FILE("CNSmlAgendaDataProvider::DoGenerateFieldFilterQueryL(): BEGIN");
 	User::Leave( KErrNotSupported );
+	_DBG_FILE("CNSmlAgendaDataProvider::DoGenerateFieldFilterQueryL(): END");
+	}
+
+// ------------------------------------------------------------------------------------------------
+// CNSmlAgendaDataProvider::DoOwnStoreFormatL
+// Read own store format from own resource file.
+// ------------------------------------------------------------------------------------------------
+//
+CSmlDataStoreFormat* CNSmlAgendaDataProvider::DoOwnStoreFormatL()
+	{
+	_DBG_FILE("CNSmlAgendaDataProvider::DoOwnStoreFormatL(): BEGIN");
+	TFileName fileName;
+	TParse parse;
+
+    // Check correct Data Sync protocol
+	TInt value( EDataSyncNotRunning );
+	TInt error = RProperty::Get( KPSUidDataSynchronizationInternalKeys,
+                                 KDataSyncStatus,
+                                 value );
+	if ( error == KErrNone &&
+	     value == EDataSyncRunning )
+	    {
+	    parse.Set( KNSmlDSAgendaDataStoreRsc_1_1_2, &KDC_RESOURCE_FILES_DIR, NULL );
+	    }
+	else // error or protocol version 1.2 
+	    {
+	    parse.Set( KNSmlDSAgendaDataStoreRsc_1_2, &KDC_RESOURCE_FILES_DIR, NULL );
+	    }		
+	
+	fileName = parse.FullName();
+	RResourceFile resourceFile;
+	BaflUtils::NearestLanguageFile( iSession, fileName );
+
+	resourceFile.OpenL( iSession, fileName );
+	CleanupClosePushL( resourceFile );
+
+	HBufC8* profileRes = resourceFile.AllocReadLC( NSML_AGENDA_DATA_STORE );
+	TResourceReader reader;
+	reader.SetBuffer( profileRes );
+
+	CSmlDataStoreFormat* dsFormat = CSmlDataStoreFormat::NewLC( iStringPool, reader );
+	CleanupStack::Pop(); // dsFormat
+	CleanupStack::PopAndDestroy( 2 ); // profileRes, resourceFile
+	_DBG_FILE("CNSmlAgendaDataProvider::DoOwnStoreFormatL(): END");
+	return dsFormat;
 	}
 
 // =================================== OTHER EXPORTED FUNCTIONS ===================================
@@ -250,9 +297,9 @@
 //
 EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
     {
-	FLOG(_L("ImplementationGroupProxy() for CNSmlAgendaDataProvider: begin"));
+	_DBG_FILE("ImplementationGroupProxy() for CNSmlAgendaDataProvider: begin");
     aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy );
-	FLOG(_L("ImplementationGroupProxy() for CNSmlAgendaDataProvider: end"));
+	_DBG_FILE("ImplementationGroupProxy() for CNSmlAgendaDataProvider: end");
     return ImplementationTable;
 	}