--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sapi_calendar/src/calendarcallback.cpp Mon Mar 30 12:51:10 2009 +0300
@@ -0,0 +1,289 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "calendarcallback.h"
+#include "calendarconstants.h"
+#include "calendarinterface.h"
+
+// ---------------------------------------------------------------------------
+// Two-phase Constructor
+// ---------------------------------------------------------------------------
+//
+CCalCallbackBaseBuffer* CCalCallbackBaseBuffer::NewL( MLiwNotifyCallback *aPtrNotifyCallback,
+ const CLiwGenericParamList& aPtrInParamList,
+ TInt32 aTransactionId )
+ {
+ return new (ELeave) CCalCallbackBaseBuffer( aPtrNotifyCallback, aPtrInParamList, aTransactionId );
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CCalCallbackBaseBuffer::CCalCallbackBaseBuffer( MLiwNotifyCallback *aPtrNotifyCallback,
+ const CLiwGenericParamList& aPtrInParamList,
+ TInt32 aTransactionId )
+ {
+ iPtrNotifyCallback = aPtrNotifyCallback;
+ iPtrInParamList = &aPtrInParamList;
+ iTransactionId = aTransactionId;
+ }
+
+// ---------------------------------------------------------------------------
+// Gives the result of asynchronous SAPI for Export
+// ---------------------------------------------------------------------------
+//
+void CCalCallbackBaseBuffer::NotifyResultL( TInt aErrCode, TAny* aResult )
+ {
+ CleanupStack::PushL( this );
+
+ CLiwGenericParamList* outParams = CLiwGenericParamList::NewL();
+
+ CleanupStack::PushL( outParams );
+
+ outParams->AppendL( TLiwGenericParam(KErrorCode,
+ TLiwVariant(CCalendarInterface::ErrCodeConversion(aErrCode))));
+
+ // Will be NULL if exported to file
+ if ( aResult )
+ {
+ outParams->AppendL( TLiwGenericParam( KReturnValue, TLiwVariant( *(HBufC8*)aResult ) ) );
+ }
+
+ TInt event = KLiwEventCompleted;
+
+ if ( aErrCode == KErrCancel )
+ {
+ event = KLiwEventCanceled;
+ }
+ else if ( aErrCode != KErrNone )
+ {
+ event = KLiwEventStopped;
+ outParams->AppendL( TLiwGenericParam(KErrorMessage,
+ TLiwVariant(_L("Calendar:Export:Error exporting entries"))));
+ }
+
+ ((MLiwNotifyCallback*)iPtrNotifyCallback)->HandleNotifyL( iTransactionId,
+ event,
+ *outParams,
+ *((CLiwGenericParamList*)iPtrInParamList) );
+
+ CleanupStack::PopAndDestroy( 2, this );
+ }
+
+
+// ---------------------------------------------------------------------------
+// Two-phase Constructor
+// ---------------------------------------------------------------------------
+//
+CCalCallbackBaseUIDSet* CCalCallbackBaseUIDSet::NewL( MLiwNotifyCallback *aPtrNotifyCallback,
+ const CLiwGenericParamList& aPtrInParamList,
+ TInt32 aTransactionId )
+ {
+ return new (ELeave) CCalCallbackBaseUIDSet( aPtrNotifyCallback, aPtrInParamList, aTransactionId );
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CCalCallbackBaseUIDSet::CCalCallbackBaseUIDSet( MLiwNotifyCallback *aPtrNotifyCallback,
+ const CLiwGenericParamList& aPtrInParamList,
+ TInt32 aTransactionId )
+ {
+ iPtrNotifyCallback = aPtrNotifyCallback;
+ iPtrInParamList = &aPtrInParamList;
+ iTransactionId = aTransactionId;
+ }
+
+// ---------------------------------------------------------------------------
+// Gives the result of asynchronous SAPI for Import
+// ---------------------------------------------------------------------------
+//
+void CCalCallbackBaseUIDSet::NotifyResultL( TInt aErrCode, TAny* aResult )
+ {
+ CleanupStack::PushL( this );
+
+ CLiwGenericParamList* outParams = CLiwGenericParamList::NewL();
+
+ CleanupStack::PushL( outParams );
+
+ outParams->AppendL(TLiwGenericParam(KErrorCode,
+ TLiwVariant(CCalendarInterface::ErrCodeConversion(aErrCode))));
+
+ CCalendarInterface::SetImportOutputL( *(RPointerArray<TUIDSet>*)( aResult ), *outParams );
+
+ TInt event = KLiwEventCompleted;
+
+ if ( aErrCode == KErrCancel )
+ {
+ event = KLiwEventCanceled;
+ }
+ else if ( aErrCode != KErrNone )
+ {
+ event = KLiwEventStopped;
+ outParams->AppendL( TLiwGenericParam(KErrorMessage,
+ TLiwVariant(_L("Calendar:Import:Error importing entries"))));
+ }
+
+ ((MLiwNotifyCallback*)iPtrNotifyCallback)->HandleNotifyL( iTransactionId,
+ event,
+ *outParams,
+ *((CLiwGenericParamList*)iPtrInParamList) );
+
+ CleanupStack::PopAndDestroy( 2, this );
+ }
+
+
+// ---------------------------------------------------------------------------
+// Two-phase Constructor
+// ---------------------------------------------------------------------------
+//
+CCalCallbackInt* CCalCallbackInt::NewL( MLiwNotifyCallback *aPtrNotifyCallback,
+ const CLiwGenericParamList& aPtrInParamList,
+ TInt32 aTransactionId )
+ {
+ return new (ELeave) CCalCallbackInt( aPtrNotifyCallback, aPtrInParamList, aTransactionId );
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CCalCallbackInt::CCalCallbackInt( MLiwNotifyCallback *aPtrNotifyCallback,
+ const CLiwGenericParamList& aPtrInParamList,
+ TInt32 aTransactionId )
+ {
+ iPtrNotifyCallback = aPtrNotifyCallback;
+ iPtrInParamList = &aPtrInParamList;
+ iTransactionId = aTransactionId;
+ }
+
+// ---------------------------------------------------------------------------
+// Gives the result of asynchronous SAPI for Delete
+// ---------------------------------------------------------------------------
+//
+void CCalCallbackInt::NotifyResultL( TInt aErrCode, TAny* /*aResult*/ )
+ {
+ CleanupStack::PushL( this );
+
+ CLiwGenericParamList* outParams = CLiwGenericParamList::NewL();
+
+ CleanupStack::PushL( outParams );
+
+ outParams->AppendL( TLiwGenericParam( KErrorCode,
+ TLiwVariant( CCalendarInterface::ErrCodeConversion( aErrCode ))));
+
+ TInt event = KLiwEventCompleted;
+
+ if ( aErrCode == KErrCancel )
+ {
+ event = KLiwEventCanceled;
+ }
+ else if ( aErrCode != KErrNone )
+ {
+ event = KLiwEventStopped;
+ outParams->AppendL( TLiwGenericParam(KErrorMessage,
+ TLiwVariant(_L("Calendar:Delete:Error deleting entries"))));
+ }
+
+ ((MLiwNotifyCallback*)iPtrNotifyCallback)->HandleNotifyL( iTransactionId,
+ event,
+ *outParams,
+ *((CLiwGenericParamList*)iPtrInParamList) );
+
+ CleanupStack::PopAndDestroy( 2, this );
+ }
+
+
+// ---------------------------------------------------------------------------
+// Two-phase Constructor
+// ---------------------------------------------------------------------------
+//
+CCalCallbackChangeNotify* CCalCallbackChangeNotify::NewL( MLiwNotifyCallback *aPtrNotifyCallback,
+ const CLiwGenericParamList& aPtrInParamList,
+ TInt32 aTransactionId )
+ {
+ return new (ELeave) CCalCallbackChangeNotify( aPtrNotifyCallback, aPtrInParamList, aTransactionId );
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CCalCallbackChangeNotify::CCalCallbackChangeNotify( MLiwNotifyCallback *aPtrNotifyCallback,
+ const CLiwGenericParamList& aPtrInParamList,
+ TInt32 aTransactionId )
+ {
+ iPtrNotifyCallback = aPtrNotifyCallback;
+ iPtrInParamList = &aPtrInParamList;
+ iTransactionId = aTransactionId;
+ }
+
+// ---------------------------------------------------------------------------
+// Gives the result of asynchronous SAPI for Change Notification
+// ---------------------------------------------------------------------------
+//
+void CCalCallbackChangeNotify::NotifyResultL( TInt aErrCode, TAny* aResult )
+ {
+ CleanupStack::PushL( this );
+
+ CLiwGenericParamList* outParams = CLiwGenericParamList::NewL();
+
+ CleanupStack::PushL( outParams );
+
+ outParams->AppendL( TLiwGenericParam(KErrorCode,
+ TLiwVariant( CCalendarInterface::ErrCodeConversion( aErrCode ))));
+
+ if ( aResult )
+ {
+ RArray<TCalChangeEntry>& outputChangeSet = *((RArray<TCalChangeEntry>*)aResult);
+ CCalendarInterface::SetNotifyOutputL( outputChangeSet, *outParams );
+ }
+
+ TInt event = KLiwEventInProgress;
+
+ if ( aErrCode == KErrCancel )
+ {
+ event = KLiwEventCanceled;
+ }
+ else if ( aErrCode != KErrNone )
+ {
+ event = KLiwEventCompleted;
+ outParams->AppendL( TLiwGenericParam(KErrorMessage,
+ TLiwVariant(_L("Calendar:RequestNotification:Notification stopped"))));
+ }
+
+ ((MLiwNotifyCallback*)iPtrNotifyCallback)->HandleNotifyL( iTransactionId,
+ event,
+ *outParams,
+ *((CLiwGenericParamList*)iPtrInParamList) );
+
+ CleanupStack::PopAndDestroy( outParams );
+
+ // Only in case of cancel the object is no more required
+ if ( aErrCode == KErrCancel || event == KLiwEventCompleted )
+ {
+ CleanupStack::PopAndDestroy( this );
+ }
+ else
+ {
+ CleanupStack::Pop( this );
+ }
+ }
+
+