landmarksui/engine/src/CLmkEncoder.cpp
branchRCL_3
changeset 17 1fc85118c3ae
parent 16 8173571d354e
child 18 870918037e16
--- 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