--- a/landmarksui/engine/src/CLmkEncoder.cpp Thu Aug 19 09:48:36 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,326 +0,0 @@
-/*
-* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "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: This file implements the methods which wrap functionality related
-* to landmark encoding into a simpler interface.
-*
-*/
-
-
-
-
-
-
-
-// INCLUDE FILES
-
-#include <e32base.h>
-#include <e32std.h>
-#include <AknQueryDialog.h>
-#include <StringLoader.h>
-#include <lmkui.rsg>
-#include <EPos_CPosLandmarkDatabase.h>
-#include <EPos_CPosLandmarkEncoder.h>
-#include "LmkConsts.h"
-#include "Debug.h"
-#include "LmkFileUtils.h"
-#include "CLmkAOOperation.h"
-#include "CLmkEncoder.h"
-#include "CLmkEncodeUnsavedLandmarksOp.h"
-#include <lmkerrors.h>
-
-// CONSTANTS
-/// Unnamed namespace for local definitions
-namespace {
-
-_LIT8( KLandmarkMimeType, "application/vnd.nokia.landmarkcollection+xml" );
-// We wrap two async. tasks (export and write to file) into one
-// using estimated 0.8/0.2 progress distribution:
-const TReal32 KLmkExportMaxProgress( TReal32( 0.8 ) );
-
-#if defined(_DEBUG)
-_LIT( KPanicMsg, "CLmkEncoder" );
-
-void Panic( TPanicCode aReason )
- {
- User::Panic( KPanicMsg, aReason );
- }
-#endif
-} // namespace
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::CLmkEncoder
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CLmkEncoder::CLmkEncoder(
- CPosLandmarkDatabase& aDb,
- MLmkAOOperationObserver& aObserver,
- TBool aProgressNote )
- : iDb( aDb ),
- iObserver( aObserver ),
- iProgressNote( aProgressNote )
- {
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::NewL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CLmkEncoder* CLmkEncoder::NewL(
- CPosLandmarkDatabase& aDb,
- MLmkAOOperationObserver& aObserver,
- TBool aProgressNote )
- {
- CLmkEncoder* self =
- new ( ELeave ) CLmkEncoder( aDb, aObserver, aProgressNote );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop(); //self
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::ConstructL()
-// -----------------------------------------------------------------------------
-//
-void CLmkEncoder::ConstructL()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::~CLmkEncoder()
-// -----------------------------------------------------------------------------
-//
-CLmkEncoder::~CLmkEncoder()
- {
- delete iAOOperation;
- delete iEncoder;
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::HandleOperationL
-// -----------------------------------------------------------------------------
-//
-void CLmkEncoder::HandleOperationL(
- TOperationTypes aType,
- TReal32 aProgress,
- TInt aStatus )
- {
- DEBUG2( CLmkEncoder::HandleOperationL entered: progress=%d status=%d,
- aProgress, aStatus );
-
- __ASSERT_DEBUG( aType == EEncode, Panic( KLmkPanicUnknownOperation ) );
-
- if ( aStatus != KPosLmOperationNotComplete )
- {
- __ASSERT_DEBUG( iAOOperation, Panic( KLmkPanicNullMember ) );
-
- delete iAOOperation;
- iAOOperation = NULL;
-
- if ( iExporting && aStatus == KErrNone )
- { // start second part of asynchronous task
- FinalizeEncodingL();
- aStatus = KPosLmOperationNotComplete;
- }
- }
-
- // Modify progress information because we have wrapped two tasks into one:
- if ( iExporting && aStatus == KPosLmOperationNotComplete )
- {
- aProgress = aProgress * KLmkExportMaxProgress;
- }
- else if ( !iExporting && aStatus == KPosLmOperationNotComplete )
- { // Progress of writing to file is between KLmkExportMaxProgress...1
- aProgress = KLmkExportMaxProgress +
- aProgress * ( 1 - KLmkExportMaxProgress );
- }
-
- if( iProgressNote || aStatus != KPosLmOperationNotComplete )
- { // Caller either requested to receive all events, or we
- // have completed entirely and inform that to the caller.
- iObserver.HandleOperationL( aType, aProgress, aStatus );
- }
-}
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::SetPackageNameL
-// -----------------------------------------------------------------------------
-//
-//EXPORT_C void CLmkEncoder::SetPackageNameL( const TDesC& aName )
-void CLmkEncoder::SetPackageNameL( const TDesC& aName )
- {
- iEncoder->AddCollectionDataL( EPosLmCollDataCollectionName, aName );
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::StartEncodingL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CLmkEncoder::StartEncodingL(
- const TDesC& aFileName,
- const RArray<TPosLmItemId>& aLandmarkIdArray )
- {
- DEBUG( CLmkEncoder::StartEncodingL entered );
- LeaveIfInUseL();
- PrepareEncoderL(aFileName);
- if (aLandmarkIdArray.Count() > 1) // Only if multiple Landmarks Are selected
- {
- // Set the package name here
- SetPackageNameL(aFileName);
- }
-
- CPosLmOperation* operation =
- iDb.ExportLandmarksL( *iEncoder,
- aLandmarkIdArray,
- CPosLandmarkDatabase::EIncludeCategories );
- CleanupStack::PushL( operation );
- iAOOperation = CLmkAOOperation::NewL( operation,
- *this,
- EEncode,
- iProgressNote );
- CleanupStack::Pop( operation ); // ownership transferred
-
- iExporting = ETrue; // exporting part of encoding is being done
-
- DEBUG( CLmkEncoder::StartEncodingL: starting operation );
- iAOOperation->StartOperation();
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::CancelEncodeOperationL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CLmkEncoder::CancelEncodeOperationL()
- {
- if ( iAOOperation )
- {
- iAOOperation->Cancel();
- delete iAOOperation;
- iAOOperation = NULL;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::FinalizeEncodingL
-// -----------------------------------------------------------------------------
-//
-void CLmkEncoder::FinalizeEncodingL()
- {
- DEBUG( CLmkEncoder::FinalizeEncodingL entered );
-
- LeaveIfInUseL();
-
- CPosLmOperation* operation = iEncoder->FinalizeEncodingL();
- CleanupStack::PushL( operation );
- iAOOperation = CLmkAOOperation::NewL( operation,
- *this,
- EEncode,
- iProgressNote );
- CleanupStack::Pop( operation ); // ownership transferred
-
- iExporting = EFalse; // write to file -part of encoding is being done
-
- DEBUG( CLmkEncoder::FinalizeEncodingL: starting operation );
- iAOOperation->StartOperation();
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::LeaveIfInUseL
-// -----------------------------------------------------------------------------
-//
-void CLmkEncoder::LeaveIfInUseL()
- {
- if ( iAOOperation )
- {
- User::Leave( KErrInUse );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::PrepareEncoderL
-// -----------------------------------------------------------------------------
-//
-void CLmkEncoder::PrepareEncoderL(const TDesC& aFileName)
- {
- // Full path name (Private path c:\\Provate\\UID3 + pacakge File name)
- HBufC* nameBuf = HBufC::NewLC( 2 * KLmkPackageNameMaxLen + KLmkEncodedDataFileExtension().Length() );
-
- // For getting private path
- TPtr ptr = nameBuf->Des();
- RFs fs;
- User::LeaveIfError(fs.Connect());
- CleanupClosePushL(fs);
- fs.SessionPath(ptr);
- fs.MkDirAll(ptr);
- CleanupStack::PopAndDestroy(); // fs
-
- ptr.Append(aFileName);
- ptr.Append(KLmkEncodedDataFileExtension);
- TInt err = KErrNone;
-
- if ( !iEncoder )
- {
- DEBUG( CLmkEncoder::StartEncodingL: creating encoder );
- TRAP(err, iEncoder = CPosLandmarkEncoder::NewL( KLandmarkMimeType ));
- DEBUG( CLmkEncoder::StartEncodingL: encoder created);
- }
- if(err != KErrNone)
- {
- LmkFileUtils::DeleteFileL( ptr ); // Delete old file if it exists
- CleanupStack::PopAndDestroy(nameBuf); //nameBuf
- User::LeaveIfError( err );
- }
- LmkFileUtils::DeleteFileL( ptr ); // Delete old file if it exists
- iEncoder->SetOutputFileL( ptr );
- CleanupStack::PopAndDestroy(nameBuf); //nameBuf
- }
-
-// -----------------------------------------------------------------------------
-// CLmkEncoder::StartEncodingL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CLmkEncoder::StartEncodingL(
- const TDesC& aFileName,
- const RPointerArray<CLmkLandmark>& aLandmarks )
- {
- DEBUG( CLmkEncoder::StartEncodingL entered );
- LeaveIfInUseL();
- PrepareEncoderL(aFileName);
- if (aLandmarks.Count() > 1) // Only if multiple Landmarks Are selected
- {
- // Set the package name here
- SetPackageNameL(aFileName);
- }
-
- CPosLmOperation* operation =
- CLmkEncodeUnsavedLandmarksOp::NewL( *iEncoder,
- aLandmarks,
- CPosLandmarkDatabase::EIncludeCategories);
- CleanupStack::PushL( operation );
- iAOOperation = CLmkAOOperation::NewL( operation,
- *this,
- EEncode,
- iProgressNote );
- CleanupStack::Pop( operation ); // ownership transferred
-
- iExporting = ETrue; // exporting part of encoding is being done
-
- DEBUG( CLmkEncoder::StartEncodingL: starting operation );
- iAOOperation->StartOperation();
- }
-// End of File